通常我們想找Winform中的所有控制項,只要底下這段就可以完成

VB:

For Each Ctl As Control In Me.Controls

          '在此可以判斷控制項的類別
          If TypeOf Ctl Is TextBox Then
            Ctl.Text = ""
        End If
 Next

C#:

foreach (Control Ctl in this.Controls) {
	//在此可以判斷控制項的類別
	if (Ctl is TextBox) {
		Ctl.Text = "";
	}
}

但是若Winform裡,

如果有用到像Panel 、TabControl、GroupBox等容器控制項

上面區塊程式碼無法讓我們尋覽Winform所有控制項

 

所以查看現在這個控制像是否有子控制項,而且必須繼續往下找

如下面第二段程式碼

VB:

Private Sub Clear()
    For Each Ctl As Control In Me.Controls
        FindSubControl(Ctl)
    Next
End Sub

Sub FindSubControl(Ctl As Control)

    '判斷是否有子控制項
    If Ctl.Controls.Count > 0 Then
        For Each Ctl1 As Control In Ctl.Controls

           '繼續往下找(遞迴)
            ClearTextBox(Ctl1)
        Next
    Else

       '若沒有就在這裡判斷控制項並結束遞迴
        If TypeOf Ctl Is TextBox Then
            Ctl.Text = ""
        End If
    End If
End Sub

C#:

private void Clear()
{
	foreach (Control Ctl in this.Controls) {
		FindSubControl(Ctl);
	}
}


public void FindSubControl(Control Ctl)
{
	//判斷是否有子控制項
	if (Ctl.Controls.Count > 0) {

		foreach (Control Ctl1 in Ctl.Controls) {
			//繼續往下找(遞迴)
			ClearTextBox(Ctl1);
		}

	} else {
		//若沒有就在這裡判斷控制項並結束遞迴
		if (Ctl is TextBox) {
			Ctl.Text = "";
		}
	}
}

arrow
arrow
    全站熱搜

    Ryan 發表在 痞客邦 留言(2) 人氣()