c#使用动态工具
在c#表单应用程序中,当我单击按钮时,我创建了一个列表框。 我从一个文本框向列表框添加了一个项目 当我单击按钮时,如果列表框不存在,我希望创建它 因此,将列表框创建代码分配给if块时,将文本框中的数据分配给列表框的代码失败。 我怎样才能解决这个问题c#使用动态工具,c#,visual-studio,winforms,dynamicobject,C#,Visual Studio,Winforms,Dynamicobject,在c#表单应用程序中,当我单击按钮时,我创建了一个列表框。 我从一个文本框向列表框添加了一个项目 当我单击按钮时,如果列表框不存在,我希望创建它 因此,将列表框创建代码分配给if块时,将文本框中的数据分配给列表框的代码失败。 我怎样才能解决这个问题 if (araclar_eklendi == false) { ListBox listB_X = new ListBox(); listB_X.******** = new Point(380, 45); this.Controls.Add(lis
if (araclar_eklendi == false)
{
ListBox listB_X = new ListBox();
listB_X.******** = new Point(380, 45);
this.Controls.Add(listB_X);
araclar_eklendi=true;
}
listB_X.Items.Add(txtBox_X.text);
您可以使用
foreach
语句遍历表单的控件来检查列表框是否存在。并定义一个布尔值来存储结果
这是一个你可以参考的演示
// bool to check if a listbox exists
bool flag = false;
private void button1_Click(object sender, EventArgs e)
{
Control control = new Control();
// traverse the form
foreach (Control c in this.Controls)
{
if (c is ListBox)
{
control = c;
flag = true;
break;
}
}
if (flag) // if true, access the listbox and add new item from tb
{
((ListBox)control).Items.Add(textBox1.Text);
}
else // if false, create a new listbox
{
ListBox listBox = new ListBox();
listBox.Location = new Point(380, 45);
this.Controls.Add(listBox);
listBox.Items.Add(textBox1.Text);
}
}
此代码在按钮中运行。单击事件,因此ListBox listB_X
是本地对象:以后将无法使用此引用(如listB_X.Items.Add(txtBox_X.text);
)。将列表框声明为实例字段,并检查它是否为null
,以决定是新建它还是仅访问它。但是您可以简单地创建它,然后在第一次请求它的存在时显示它。如果列表框的位置和大小等是固定的,为什么不像往常一样(使用设计器)将其添加到表单中,并首先将其隐藏(可见:false)?然后,在这个事件处理程序中,当需要显示它时,如果它还不可见,则可以使它可见。