如何通过它打开的winform调用主程序?

时间:2008-11-05 01:30:16

标签: c# winforms

我有一个程序,当它启动时,打开一个winform(它是在Application.Run(new ...)中指定的一个。从这个表单我打开另一个表单:

OtherForm newForm=new OtherForm();
newForm.Show();

我如何从新的winform与打开它的表格进行交流?所以我可以添加一些项目。

3 个答案:

答案 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);

}