我有一個包含選項卡控件(page1,page2和page3)的WPF。在TabControl中循環Groupbox
在2標籤控制頁面上,我有3組框(groupbox_A,groupbox_B,和groupbox_C),並且每個組框中的含有3文本框。
我可以知道什麼是C#代碼來遍歷所有文本框並清除內容。
我有一個包含選項卡控件(page1,page2和page3)的WPF。在TabControl中循環Groupbox
在2標籤控制頁面上,我有3組框(groupbox_A,groupbox_B,和groupbox_C),並且每個組框中的含有3文本框。
我可以知道什麼是C#代碼來遍歷所有文本框並清除內容。
該函數將返回選項卡控件中的所有文本框。
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
您可以通過列舉這樣得到的所有文本框:
foreach (var textbox in FindVisualChildren<TextBox>(window))
{
// do something with tb here
}
感謝您分享代碼。看起來我需要確保標籤頁2被激活,以便第2頁中的文本框存儲清除。 – user6648485
我的stackpanel_1的方向設置爲垂直。在stackpanel_1中,它由stackpanel_A,B,C和D組成,方向設置爲水平幷包含幾個按鈕。一些代碼像foreach(stackpanel_1.Children中的stackepanel stkpnl)是如何工作的。 – user6648485
同樣的事情也發生在這裏。請參閱'for(int i = 0; i
這不`噸看起來像一個好辦法..找到另一個邏輯來清除文本..但如果你只是想知道它會如何工作...
最簡單的方法:
IEnumerable<myType> collection = control.Children.OfType<myType>();
(控制窗口的根元素的myType將groubBox你的情況)
微軟的方式,通過所有元素Link獲得:
// Enumerate all the descendants of the visual object.
static public void EnumVisual(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
// Do processing of the child visual object.
// Enumerate children of the child visual object.
EnumVisual(childVisual);
}
}
您能否詳細介紹一下最簡單的方法和Microsoft的方式,因爲我仍然嘗試獲取C#技能並應用於我的工作。 (我用VB在2周前練習,我從C#開始)。 – user6648485
您是否嘗試過類似groupbox_A。 textbox1.clear()? –
我強烈建議您使用數據綁定並清除* data *。 –
最初的代碼是使用提到的代碼(textbox1.clear())。考慮到接近60的文本框,維護代碼將會很困難。 – user6648485