2015-01-24 2 views
1

У меня есть 10 Textboxs, тогда я попытался установить цвет фона в красный цвет для всех Textbox, который является пустым листом, это работает, но он не устанавливает цвет фона на от первого Textbox до десятого Textbox, я также попытался установить TabIndex. Но это все еще не работает.Как установить цвет фона всех элементов управления DevExpress TextEdit в vb.net

#Region "Method" 

    Private Function pf_validate_ok() 
     For Each tb In Panel1.Controls 
      If TypeOf tb Is DevExpress.XtraEditors.TextEdit Then 
       If tb.Text = String.Empty Then 

        tb.BackColor = Color.Red 
        tb.ForeColor = Color.White 

        Return False 
       Else 
        tb.BackColor = Color.White 
        tb.ForeColor = Color.Black 
       End If 
      End If 
     Next tb 
     Return True 
    End Function 

#End Region 

ответ

0

Они могут стать «неработоспособными», если вы их переименовали или вырезали/наклеили вокруг формы.

Чтобы гарантировать заказ, либо создать в явном виде массива и итерацию, что:

Private Function pf_validate_ok() 
    Dim TBs() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5} 
    For Each tb In TBs 
     If TypeOf tb Is DevExpress.XtraEditors.TextEdit Then 
      If tb.Text = String.Empty Then 

       tb.BackColor = Color.Red 
       tb.ForeColor = Color.White 

       Return False 
      Else 
       tb.BackColor = Color.White 
       tb.ForeColor = Color.Black 
      End If 
     End If 
    Next tb 
    Return True 
End Function 

Или искать их по имени с петлей:

Private Function pf_validate_ok() 
    For i As Integer = 1 To 5 
     Dim matches() As Control = Me.Controls.Find("TextBox" & i, True) 
     If matches.Length > 0 AndAlso TypeOf matches(0) Is DevExpress.XtraEditors.TextEdit Then 
      Dim tb As DevExpress.XtraEditors.TextEdit = DirectCast(matches(0), DevExpress.XtraEditors.TextEdit) 
      If tb.Text = String.Empty Then 

       tb.BackColor = Color.Red 
       tb.ForeColor = Color.White 

       Return False 
      Else 
       tb.BackColor = Color.White 
       tb.ForeColor = Color.Black 
      End If 
     End If 
    Next 
    Return True 
End Function 

Вам нужно изменить имена в массиве или в вызове Controls.Find() в соответствии с вашим конкретным сценарием.

0

Вы можете сортировать свои TextBox's по TextBox.Top и TextBox.Left свойства, чтобы получить в порядке заказ.
Вот пример с LINQ:

Dim textBoxs = From textBox In Panel1.Controls 
       Where TypeOf textBox Is DevExpress.XtraEditors.TextEdit 
       Order By textBox.Top, textBox.Left 
       Select DirectCast(textBox, DevExpress.XtraEditors.TextEdit) 

For Each textBox In textBoxs 
    If textBox.Text = String.Empty Then 
     textBox.BackColor = Color.Red 
     textBox.ForeColor = Color.White 

     Return False 
    Else 
     textBox.BackColor = Color.White 
     textBox.ForeColor = Color.Black 
    End If 
Next textBox