gpt4 book ai didi

.net - 如何在 .net 中处理动态 GUI

转载 作者:行者123 更新时间:2023-12-02 07:55:25 25 4
gpt4 key购买 nike

我遇到了一个问题,这个问题可能经常出现,但这里从未真正讨论过。

在我的 Gui 中,我将 for 循环中的控件添加到 Flowpanellayout。重点是显示来自数据库的“报告”。它必须是动态的,因为报告的数量每天都可能不同。


添加 Gui 元素的伪代码:

for(int i = 0; i < reports.Count; i++)
{
TextBox textboxPerson = new TextBox();
textboxPerson.Name = "TextboxName" + i;
textboxPerson.Text = reports[i].Name;
textboxPerson.TextChanged += new EventHandler(this.textboxPerson_TxtChanged);

Label labelToChange = new Label();
labelToChange.Name = "label"+i;
labelToChange.Text = "";

flowlayoutPanel.Controls.Add(textboxPerson);
flowlayoutPanel.Controls.Add(labelToChange);
}

事件处理器:

private void textboxPerson_TextChanged(object sender, EventArgs e)
{
//So far, I'm only getting the number of the Textbox that changed.
}

这是我需要您的建议的地方。文本框和标签匹配(即,Texbox1 如您所见连接到 Label1)。但是我该如何处理一个特定的控件?

  • 如果 Texbox1 的文本发生变化,我该如何处理 Label1 以更改其文本或其他内容?
  • 是否有向表单添加动态 Gui 元素并处理它们的最新技术?

最佳答案

您可以使用 Tag例如,控件的属性。在您的循环中,您可以将 Label 分配给 TextBoxTag 属性,如下所示:

TextBox textboxPerson = new TextBox();
// do the stuff with the text box

Label labelToChange = new Label();
// do the stuff with the label
textboxPerson.Tag = labelToChange

然后可以在TextBoxTextChanged事件中获取Label:

private void textboxPerson_TextChanged(object sender, EventArgs e)
{
//So far, I'm only getting the number of the Textbox that changed.
Label theLabel = (sender as TextBox).Tag;
theLabel.Text = "whatever should go here";
}

关于.net - 如何在 .net 中处理动态 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1129960/

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