C#错误提供程序.ContainerControl.控件仅包含TabControl
本文关键字:控件 包含 TabControl ContainerControl 程序 错误 | 更新日期: 2023-09-27 18:00:13
我有一个包含TabControl和ErrorProvider的Form。其中一个选项卡有几个文本框和一个按钮。如果内容无效,则文本框将Validating事件用于SetError()。按下按钮时,运行以下操作:
bool ok = true;
foreach (Control c in errorProviderDv.ContainerControl.Controls)
{
MessageBox.Show(c.Name);
if (errorProviderDv.GetError(c) != "")
{
ok = false;
}
}
TabControl是errorProviderDv中唯一的控件。ContainerControl。控件,即使设置了几个错误并在表单中显示。
我做错什么了吗?ErrorProvider是否需要是选项卡的子项而不是窗体?
TabControl本身就是一个包含TabPages的容器。这些TabPages是包含您的文本框的容器。
下面的代码会得到你想要的,但你可能想清理它,在容器中进行递归调用传递,这样它几乎适用于任何类型。
private void button1_Click(object sender, EventArgs e)
{
bool ok = true;
foreach (Control c in errorProviderDv.ContainerControl.Controls)
{
if (c is TabControl)
{
foreach (Control t in (c as TabControl).SelectedTab.Controls)
{
MessageBox.Show(t.Name);
if (errorProviderDv.GetError(t) != "")
{
ok = false;
}
}
}
}
}