我有一个程序,当它启动时,打开一个winform(它是在Application.Run(new ...)中指定的一个。从这个表单我打开另一个表单:
OtherForm newForm=new OtherForm();
newForm.Show();
我如何从新的winform与打开它的表格进行交流?所以我可以添加一些项目。
答案 0 :(得分:2)
最简单的方法是覆盖构造函数,例如OtherForm newForm=new OtherForm(string title, int data);
。这也适用于引用类型(这是一种简单的数据发送方式)。
答案 1 :(得分:2)
在另一个表单的构造函数中添加对主表单的引用。然后在您需要访问的主窗体上创建公共/内部任何内容。
Form m_mainForm;
public OtherForm(Form mainForm)
{
m_mainForm = mainForm;
}
编辑:
回复您的第二篇文章 - 您可能还会考虑公开创建项目所需的必要值。例如,如果您需要名字和姓氏来创建新的“人物”项,则可以在对话框中将这些项公开为属性。这将有助于将其断开一点,并使其更具通用性。
当然,您的解决方案也可以,只有您知道什么才能在您的设计中发挥最佳效果。
答案 2 :(得分:0)
我想我在这里找到了答案: http://www.c-sharpcorner.com/UploadFile/mosessaur/winformsdelegates09042006094826AM/winformsdelegates.aspx
我必须使用代表。在第二种形式中,我定义:
public delegate void AddItemDelegate(string item);
public AddItemDelegate AddItemCallback;
从打开它的表格我写道:
private void btnScenario2_Click(object sender, EventArgs e)
{
FrmDialog dlg = new FrmDialog();
//Subscribe this form for callback
dlg.AddItemCallback = new AddItemDelegate(this.AddItemCallbackFn);
dlg.ShowDialog();
}
private void AddItemCallbackFn(string item)
{
lstBx.Items.Add(item);
}