2017-06-23 8 views
-1
Public Sub ClearTextBoxes(ByVal Frm As Form) 
    Dim Ctl As Control 
    For Each Ctl In Frm.Controls 
     If TypeOf Ctl Is TextBox Then Ctl.Text = "" 
     If TypeOf Ctl Is GroupBox Then 
      Dim Ctl1 As Control 
      For Each Ctl1 In Ctl.Controls 
       If TypeOf Ctl1 Is TextBox Then 
        Ctl1.Text = "" 
       End If 
      Next 
     End If 
     Next 
     End Sub 

私はこの方法がありますが、私のグループボックスはパネル内にあり、これらのコントロールで混乱しています。ここでパネル内にあるグループボックス内に複数のテキストボックスをクリアする

+0

「パネル内にあるグループボックス内」あなたのコードはパネルを無視しているようです。 – LarsTech

+0

ああ、私は知っているが、私は新しい、私はどのようにパネルとループすることができますかわからない。コードを教えてくれますか?ありがとう:) –

+0

あなたはすでにそれをやっているのと同じ方法でループします。最初にPanelのチェックを追加してから、グループボックスのパネルコントロールを検索し、次にグループボックスコントロールを検索してテキストボックスを検索する必要があります – soohoonigan

答えて

0

はそれを行うための一つの方法です:

Public Sub ClearTextBoxes(ByVal Frm As Form) 
     Dim Ctl As Control 

     For Each Ctl In Frm.Controls 
     If TypeOf Ctl Is TextBox Then Ctl.Text = "" 

     If TypeOf Ctl Is Panel Then 
      Dim Ctl1 As Control 

      For Each Ctl1 In Ctl.Controls 
       If TypeOf Ctl1 Is TextBox Then Ctl1.Text = "" 

       If TypeOf Ctl1 Is GroupBox Then 
        Dim Ctl2 As Control 

        For Each Ctl2 In Ctl1.Controls 
        If TypeOf Ctl2 Is TextBox Then Ctl2.Text = "" 
        Next 
       End If 
      Next 
     End If 
     Next 
    End Sub 

それはすべてのシナリオをカバーしていないかもしれないが、それはあなたが私たちに語っているもののために動作します。

4

最も簡単な方法は、単に列挙型のコントロールをフィルタリングすることである。

For Each p As Panel In Frm.Controls.OfType(Of Panel)() 
    For Each gb As GroupBox In p.Controls.OfType(Of GroupBox)() 
    For Each tb As TextBox In gb.Controls.OfType(Of TextBox)() 
     tb.Clear() 
    Next 
    Next 
Next 
0

は、私は、このコードは私のために完璧に動作することを締結している、すべてのご提案をいただき、ありがとうございます。

Public Sub ClearTextBoxes(ByVal Frm As Form) 
    Dim Ctl As Control 

    For Each Ctl In Frm.Controls 
     If TypeOf Ctl Is TextBox Then Ctl.Text = "" 

     If TypeOf Ctl Is Panel Then 
      Dim Ctl1 As Control 

      For Each Ctl1 In Ctl.Controls 
       If TypeOf Ctl1 Is TextBox Then Ctl1.Text = "" 

       If TypeOf Ctl1 Is GroupBox Then 
        Dim Ctl2 As Control 

        For Each Ctl2 In Ctl1.Controls 
         If TypeOf Ctl2 Is TextBox Then Ctl2.Text = "" 
        Next 
       End If 
      Next 
     End If 

     If TypeOf Ctl Is GroupBox Then 
      Dim Ctl1 As Control 
      For Each Ctl1 In Ctl.Controls 
       If TypeOf Ctl1 Is TextBox Then 
        Ctl1.Text = "" 
       End If 
      Next 
     End If 
    Next 
End Sub 
関連する問題