如何检查拆分容器中的所有文本框



我的程序使用一个拆分容器,两个面板1&2个有文本框。当程序试图关闭时,我正在尝试运行一个提示用户保存的检查。我尝试了以下代码,但它似乎不起作用,因为文本框在splitcontaier中(只是猜测)。

private void button1_Click(object sender, EventArgs e)
    {
        foreach ( TextBox tb in this.Controls.OfType<TextBox>()) 
        {
            tb.Text = "Save";
        }
    }

当我在表单中有文本框的程序中使用这段代码时,它就起作用了。当我尝试在面板中文本框所在的位置使用它时,它不会。如果我使用指定拆分容器的代码,它也不起作用

  foreach ( TextBox tb in splitContainer1.Controls.OfType<TextBox>()) 
       {               
           tb.Text = "Save";
        }

如何让它寻址splitcontainer中的文本框?

我可以在一个特定的面板中指定文本框,每次1个:

//this works, but only populates those text boxes in panel1
foreach ( TextBox tb in splitContainer1.Panel1.Controls.OfType<TextBox>() ) 
       {               
           tb.Text = "save";
        }

但我似乎仍然无法在一次测试中做到这一点。我必须独立检查两个面板。

您需要像Leepie这样的注释,递归地检查特定类型的所有控件。

使用这样的方法,您可以对每个TextBox执行一个操作方法。

public void ModifyControl<T>(Control root, Action<T> action) where T : Control
{
    if (root is T)
        action((T)root);
    // Call ModifyControl on all child controls
    foreach (Control control in root.Controls)
        ModifyControl<T>(control, action);
}

你这样称呼它:

ModifyControl<TextBox>(splitContainer1, tb => tb.Text = "Save");

相关内容

  • 没有找到相关文章

最新更新