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是否需要是选项卡的子项而不是窗体?

C#错误提供程序.ContainerControl.控件仅包含TabControl

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;
                }
            }
        }
    }
}