我有三个表格,例如Form1,Form2,Form3。每当我单击Form2中的按钮时,它应该在Form3中的CheckedListBox中添加一个项目。在Form1中,每当我点击一个按钮时,它应该显示更新的Form3的CheckedListBox(即更新的checkedlistbox,它是由Form2中的单击按钮引起的)。任何人都可以帮助我吗?
在这里输入代码
答案 0 :(得分:0)
添加一个新的Singleton Factory类,它有助于彼此共享表单对象,如下所示:
public class FormFactory
{
Dictionary<string, Form> forms = new Dictionary<string, Form>();
private static FormFactory _factory;
public void SetForm(string name, Form form)
{
forms[name] = form;
}
public Form GetForm(string name)
{
if (forms.ContainsKey(name))
return forms[name];
return null;
}
private FormFactory()
{
}
static FormFactory()
{
_factory = new FormFactory();
}
public static FormFactory Instance
{
get
{
return _factory;
}
}
}
更改您要从私有内部共享的所有控件的访问修饰符。例如:
internal System.Windows.Forms.CheckedListBox checkedListBox1;
在form1中添加表单加载方法,如下所示:
private void Form1_Load(object sender, EventArgs e)
{
FormFactory.Instance.SetForm("Form1", this);
}
现在,您可以使用以下代码在Form3的button1上单击Form2时在FormList3的checkedListBox1中添加项目:
private void button1_Click(object sender, EventArgs e)
{
Form3 form3 = FormFactory.Instance.GetForm("Form3") as Form1;
if(form3!=null)
{
form3.checkedListBox1.Items.Add("Item" + form3.checkedListBox1.Items.Count);
}
}
答案 1 :(得分:-1)
您可以使用&#34; EventAggregator模式&#34; 来解决此问题。