2011-04-23 12 views
5

¿Cuál es el equivalente C# de los métodos DisableControls/EnableControls de Delphi (utilizados para deshabilitar la actualización de los controles de datos al iterar a través del conjunto de datos subyacente)? He buscado en Google durante media hora y no encontré una respuesta ...C# equivalente a Delphi's DisableControls/EnableControls

Tengo un cuadro de lista y un cuadro de edición enriquecido vinculado a un origen de enlace, pero tengo que hacer una operación que recorre todo el conjunto de datos, y ambos controles se actualizan a medida que avanzo en el conjunto de datos subyacente. En Delphi esto es bastante fácil: encierre el bloque que realiza la iteración entre DisableControls y EnableControls. No puedo encontrar el equivalente de C# /. NET, ¡y me he visto muy duro!

+0

¿Qué estás usando? WinForms o WPF? – svick

+3

¿ha intentado establecer la propiedad 'RaiseListChangedEvents' de su bindingsource en' false'? – DarkSquirrel42

Respuesta

1

No tengo acceso a Visual Studio en este momento, así que no puedo probar esto, pero mire a través de los métodos para la instancia de control. Código como:

// 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; 

El nombre exacto de la propiedad puede variar ligeramente, pero estoy bastante seguro de que es así.

+1

También puede deshabilitar el formulario completo haciendo 'this.Enabled = false', o incluso poner los controles en un' GroupBox', luego 'this.myGroupBox.Enabled = false' deshabilitará todos los controles dentro de ese cuadro de Grupo; editar: suponiendo que está en el código del formulario, no es un método externo – PostMan

0

Supongo que está utilizando WinForms, en ese caso puede intentar usar los métodos SuspendLayout/ResumeLayout.

Ejemplo de código de 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(); 
} 
2

IIRC, el establecimiento de Enabled a false no impide que los controles de reaccionar a los cambios de datos en Windows Forms.

Los controles vinculados a la colección como el ListBox suelen tener los métodos BeginUpdate() y EndUpdate() que deshabilitan temporalmente las actualizaciones visuales.

Además, la propiedad mencionada por DarkSquirrel podría valer la pena un vistazo

0

Hasta ahora no se sabe, no es necesario Disiable/EnableControls en C#, ya que este tipo de conjunto de datos no funciona con un cursor actual , como Delphi TDataSets.