Acceso a propiedades de controles Fecha: 19/Jul/2004 (17 de julio 2004)
|
El siguiente c�digo va en respuesta a una petici�n SOS de panorama Box, de Joan Carles Bay�s:
Puedo utilizar una instrucci�n como esta para modificar las propiedades de un control:
foreach(System.Windows.Forms.Control control in this.tabPage01.Controls)
if(Object.ReferenceEquals(control.GetType(),this.textBox.GetType()))
{ ...... Como puedo referenciar la propiedad ReadOnly de un controle TextBox }
Si no se puede hacer, me gustar�a hacer algo similar, sin referenciar directamente los controles (textBox.ReadOnly = true)
Si lo que se desea es modificar alguna propiedad de todos los controles de un determinado tipo (por ejemplo, todos los TextBox), puedes hacer lo siguiente:
Visual Basic
Dim c As Control For Each c In Me.TabPage1.Controls If c.GetType Is Me.txt1.GetType Then DirectCast(c, TextBox).ReadOnly = True End If Next
C#
foreach (Control c in this.tabPage1.Controls) { if (c is TextBox) { ((TextBox)c).ReadOnly=true; } }Lo que hace es recorrer la colecci�n de controles verificando si el tipo de cada controles TextBox ( c.GetType Is Me.txt1.GetType, c is TextBox). Si se cumple eso, se debe hacer una conversi�n a dicho tipo para poder acceder a las propiedades que son exclusivas de la clase TextBox (DirectCast(c, TextBox)) . Finalmente, utilizas la propiedad deseada.
En cambio si lo que se quiere es ubicar un control en espec�fico, una opci�n es la siguiente:Visual Basic
Dim c As Control For Each c In Me.TabPage1.Controls If c Is Me.txt1 Then DirectCast(c, TextBox).ReadOnly = True End If Next
C#
foreach (Control c in this.tabPage1.Controls) { if (c ==this.txt1) { ((TextBox)c).ReadOnly=true; } }La diferencia aqu� es que en lugar de preguntar por el tipo del control, se pregunta si la instancia es la misma que la del control espec�fico que se desea buscar (c Is Me.txt1, c==this.txt1) . Luego se realiza lo mismo que antes, y salimos del loop debido a que ya no se
desea seguir recorriendo la colecci�n (ya se ha encontrado lo que se buscaba).
NOTA: no alcanzo a entender para que necesitas realizar esto �ltimo, dado que si cuentas con la referencia directa del TextBox,
no veo la necesidad de buscarlo en la colecci�n de controles.