C # эквивалент Delphi's DisableControls / EnableControls - PullRequest
5 голосов
/ 24 апреля 2011

Что такое эквивалент C # Delphi's DisableControls / EnableControls методов (используется для отключения обновления элементов управления с привязкой к данным при выполнении итераций по базовому набору данных)? Я полчаса гуглил и ответа не нашел ...

У меня есть поле со списком и поле расширенного редактирования, привязанное к источнику привязки, но мне нужно выполнить операцию, которая выполняет итерацию по всему набору данных, и оба элемента управления обновляются при перемещении по базовому набору данных. В Delphi это достаточно просто: заключите блок, который выполняет итерацию между DisableControls и EnableControls. Я не могу найти эквивалент C # /. NET, и я выглядел очень усердно!

Ответы [ 4 ]

2 голосов
/ 25 апреля 2011

IIRC, установка Enabled в false не предотвращает реакцию элементов управления на изменения данных в WinForms.

Элементы управления, связанные с коллекциями, такие как ListBox, обычно имеют методы BeginUpdate() и EndUpdate() которые временно отключают визуальные обновления.

Также стоит упомянуть свойство, упомянутое DarkSquirrel

1 голос
/ 24 апреля 2011

Сейчас у меня нет доступа к Visual Studio, поэтому я не могу проверить это, но просматриваю методы для экземпляра элемента управления.Код, такой как:

// set the Enabled property of 
// the controls to False; this should
// disable the controls for user access

listBox.Enabled = False;  
richEditBox.Enabled = False;  

// perform iteration  
// and other operations

// set the Enabled property back 
// to True  

listBox.Enabled = True;  
richEditBox.Enabled = True;  

Точное имя свойства может немного отличаться, но я уверен, что это то, что оно есть.

0 голосов
/ 21 декабря 2012

Насколько я знаю, вам не нужно отключать / включать элементы управления в C #, так как этот тип DataSet не работает с текущим курсором, как Delphi TDataSets.

0 голосов
/ 25 апреля 2011

Я предполагаю, что вы используете WinForms, в этом случае вы можете попробовать использовать методы SuspendLayout / ResumeLayout .

Пример кода из MSDN:

private void AddButtons()
{
   // Suspend the form layout and add two buttons.
   this.SuspendLayout();
   Button buttonOK = new Button();
   buttonOK.Location = new Point(10, 10);
   buttonOK.Size = new Size(75, 25);
   buttonOK.Text = "OK";

   Button buttonCancel = new Button();
   buttonCancel.Location = new Point(90, 10);
   buttonCancel.Size = new Size(75, 25);
   buttonCancel.Text = "Cancel";

   this.Controls.AddRange(new Control[]{buttonOK, buttonCancel});
   this.ResumeLayout();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...