c# - 在 win 表单上添加动态元素?

标签 c# winforms

我有两种形式。单击 form1 上的按钮打开 form2,用户在其中添加详细信息,并将其返回到 form1,信息存储到 List 中,并创建文本框和界面的其他元素。

我有 5 个不同级别的选项卡,但添加的信息是相同的。

如何避免使用

创建类似的代码 5 次
if (level==5) {//do this whole code again}

添加元素的示例:

int _nextTextBoxTop=15;
List<TextBox> CodesMy = new List<TextBox>();

var code = new TextBox();
CodesMy.Add(code);
code.Location = new Point(12, _nextTextBoxTop);
_nextTextBoxTop += 36;
code.Size = new Size(80, 25);
code.Text = mcode;
tabPageLevel5.Controls.Add.Controls.Add(code); 

最佳答案

最简单的解决方案可能是将元素创建重构为一个单独的函数,如下所示:

CreateControls(TabPage tabPage)
{
var code = new TextBox();
CodesMy.Add(code);
code.Location = new Point(12, _nextTextBoxTop);
_nextTextBoxTop += 36;
code.Size = new Size(80, 25);
code.Text = mcode;
tabPage.Controls.Add.Controls.Add(code);     
}

您的客户端代码将如下所示:

if (level==5) {CreateControls(tabPageLevel5);}

比动态添加控件更简单的方法可能是创建一个在每个选项卡页上使用的用户控件。

即使您需要动态添加控件,您仍然可以使用用户控件来完成此操作,并每次在每个附加选项卡页上克隆它。

关于c# - 在 win 表单上添加动态元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437253/

相关文章:

c# - ContentAlignment 枚举值的解释

c# - 具有多个计时器的 WinForm

sql-server - 如何减少 Sql Server 中的搜索时间

vb.net - 如何从 VB.NET 中的对话框表单中获取值?

VB.NET - RichTextBox - 将格式应用于选定的文本

c# - 检查 ContentDialog 是否打开

c# - 如何在 C# 中设置项目范围的#define

c# - 获取 DataTemplate 中的元素

c# - 了解 C# 属性的工作原理

c# - .NET Core 3.1 中缺少菜单类