vb.net - visual - for next vba excel ejemplos
Para cada bucle de cuadro de texto (3)
Prueba esto. Recuperará el color cuando ingrese datos también
For Each c As Control In Panel1.Controls
If TypeOf c Is TextBox Then
If c.Text = "" Then
c.BackColor = Color.LightYellow
Else
c.BackColor = System.Drawing.SystemColors.Window
End If
End If
Next
También hay una forma diferente de hacer esto que implica crear un control TextBox heredado y usarlo en su formulario:
Public Class TextBoxCompulsory
Inherits TextBox
Overrides Property BackColor() As Color
Get
If MyBase.Text = "" Then
Return Color.LightYellow
Else
Return DirectCast(System.Drawing.SystemColors.Window, Color)
End If
End Get
Set(ByVal value As Color)
End Set
End Property
End Class
Estoy tratando de crear un bucle foreach que compruebe cada cuadro de texto en un panel y cambie BackColor si su texto no es nada. He intentado lo siguiente:
Dim c As TextBox
For Each c In Panel1.Controls
if c.Text = "" Then
c.BackColor = Color.LightYellow
End If
Next
pero estoy obteniendo el error:
No se puede convertir el objeto del tipo System.Windows.Forms.Label para escribir System.windows.forms.textbox
Puede intentar algo como esto en su lugar:
Dim ctrl As Control
For Each ctrl In Panel1.Controls
If (ctrl.GetType() Is GetType(TextBox)) Then
Dim txt As TextBox = CType(ctrl, TextBox)
txt.BackColor = Color.LightYellow
End If
Suponiendo que no hay controles anidados:
For Each c As TextBox In Panel1.Controls.OfType(Of TextBox)()
If c.Text = String.Empty Then c.BackColor = Color.LightYellow
Next