gpt4 book ai didi

c# - 遍历 TabControl 中的 TabItems

转载 作者:行者123 更新时间:2023-11-30 14:38:06 30 4
gpt4 key购买 nike

我有一个 tabcontrol,里面有 9 个 tabitem。每个选项卡都有一系列文本框供用户输入数据。底部是一个清除按钮,连接到这个方法:

public void ClearTextBoxes()
{
ChildControls ccChildren = new ChildControls();

foreach (object o in ccChildren.GetChildren(rvraDockPanel, 2))
{
if (o.GetType() == typeof(WatermarkTextBox) || o.GetType() == typeof(DateBox) ||
o.GetType() == typeof(DigitBox) || o.GetType() == typeof(PhoneBox))
{
WatermarkTextBox water = (WatermarkTextBox)o;
water.Text = "";
}
else if (o.GetType() == typeof(ComboBox))
{
ComboBox combo = (ComboBox)o;
combo.SelectedIndex = -1;
}
else if (o.GetType() == typeof(CheckBox))
{
CheckBox check = (CheckBox)o;
check.IsChecked = false;
}
}
}

这工作得很好,但是我还有一个 MenuItem 允许用户清除所有选项卡。现在,清除按钮只会清除当前选定选项卡上的内容,而不会影响其他所有内容。我对如何做到这一点的想法是用这个循环遍历 tabitems:

        for (int i = 0; i < 10; i++ )
{
tabSelection.SelectedIndex = i;
clearButton_Click(null, null);
}

它将翻阅所有选项卡,但不会清除任何内容。我试过使用自动化,结果相同。它似乎不会清除任何东西。

子控件类:

class ChildControls
{
private List<object> listChildren;

public List<object> GetChildren(Visual p_vParent, int p_nLevel)
{
if (p_vParent == null)
{
throw new ArgumentNullException("Element {0} is null!", p_vParent.ToString());
}

this.listChildren = new List<object>();

this.GetChildControls(p_vParent, p_nLevel);

return this.listChildren;

}

private void GetChildControls(Visual p_vParent, int p_nLevel)
{
int nChildCount = VisualTreeHelper.GetChildrenCount(p_vParent);

for (int i = 0; i <= nChildCount - 1; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(p_vParent, i);

listChildren.Add((object)v);

if (VisualTreeHelper.GetChildrenCount(v) > 0)
{
GetChildControls(v, p_nLevel + 1);
}
}
}

最佳答案

WPF 丢弃未选中的 TabItem 的整个 VisualTree,因此不可见的选项卡上实际上不存在控件。

为了维护控件值(例如选择、文本等),它们需要绑定(bind)到某些东西。如果它们绑定(bind)到某物,那么您的 Clear() 方法实际上应该清除绑定(bind)值,而不是 UI 值。如果它们未绑定(bind)到任何东西,则 TabControl 将在被选中时恢复到其初始状态。

关于c# - 遍历 TabControl 中的 TabItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8507256/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com