while visual repetitivas que for estructuras ejemplos ciclo vb.net

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