gpt4 book ai didi

c# - 如何检查拆分容器内的所有文本框?

转载 作者:行者123 更新时间:2023-11-28 20:33:09 25 4
gpt4 key购买 nike

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

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

}
}

当我在表单本身内有文本框的程序中使用这段代码时,它起作用了。当我尝试在文本框位于面板内的地方使用它时,它没有。如果我使用指定 splitcontainer 的代码,它也不起作用

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

我怎样才能得到它来解决拆分容器中的文本框?

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

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

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

最佳答案

你需要像 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");

关于c# - 如何检查拆分容器内的所有文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8753700/

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