我有两种形式: Form1 , Form2 。 Form1有checkedlistbox: checkedlistbox1
我需要的只是当我从Form2中单击一个按钮,然后checkedlistbox项应该是清楚的。 从搜索我发现并应用此代码但无效。
using (Form1 form1 = new Form1())
{
form1.checkedListBox1.Items.Clear();
}
但没有奏效。 请提出一些想法。
答案 0 :(得分:3)
您正在创建一个未显示的新表单,并且正在清除该表单上的列表框。您需要的是对您已经打开的表单的引用。那么无论你在哪里打开Form1
(可能是来自program.cs?),都要存储对Form1的引用,以便你可以使用form2
中的引用,所以调用checkedListBox1.Items.Clear();
答案 1 :(得分:3)
因为你做的时候
using (Form1 form1 = new Form1())
您实际上正在创建Form1
的新实例。这就是为什么它不起作用。您需要获取Form1
的当前实例。
foreach (var item in Application.OpenForms)
{
Form1 form1 = item as Form1;
if (form1 != null)
{
form1.checkedListBox1.Items.Clear();
}
}
或者可能
((Form1) Application.OpenForms["Form1"]).checkedListBox1.Items.Clear();
答案 2 :(得分:1)
您所做的是创建Form1的新实例。您需要访问已创建的那个(填充列表),然后执行清除。
答案 3 :(得分:1)
如果要在当前显示的表单上访问,请将Form1的实例传递给Form2 如果您以下列方式在Form1中显示Form2,
Form2 form2 = new Form2();
form2.ShowDialog(this);
然后,您可以使用,
using (Form1 form1 = ((Form1)Owner))
{
form1.checkedListBox1.Items.Clear();
}
答案 4 :(得分:0)
你应该做一些事情:
OnClick
form1reference.checkedListBox1.Items.Clear();
答案 5 :(得分:0)
您正在创建Form1的新实例,它将无法正常工作。使用像所有者等属性。尝试这样的事情。
var myowner = this.Owner as Form1;
myowner.checkedListBox1.Items.Clear();
答案 6 :(得分:0)
检查或更改Form1复选框的modifiers属性为public
答案 7 :(得分:0)
在表单1中设置复选框1修饰符为public,如果form1已经打开 form2代码将是:
private void button1_Click(object sender, EventArgs e)
{
form1.checkBox1.Checked = false;
}
答案 8 :(得分:0)
从Form1.Designer.cs
公开您的CheckBoxList。
然后
private void button1_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.Show();
//form1.checkedListBox1.SetItemChecked(0, true);
form1.checkedListBox1.Items.Clear();
}