将数据传递到现有表单

时间:2013-02-27 12:23:15

标签: c# forms

我有一个需要来自另一个表单的数据的程序,我需要传递它而不创建第一个表单的新实例。我怎么能这样做?

离。

Form2 f2 = new Form2();

f2.showdialog();

当f2显示时,它们是带有项目的列表视图,当我单击某个项目时,我希望将项目发送回第一个表单而不关闭form2并且不实例化新的Form1。

4 个答案:

答案 0 :(得分:1)

  

我需要传递它而不创建第一个表单的新实例。

这意味着您在后台打开了第一张表格。您可以使用Application.OpenForms属性来获取已打开的表单,然后从那里获取数据。 类似的东西:

Form2 f2 = Application.OpenForms["Form2"] as Form2;
if(f2 != null)
   string data = f2.SomeProperty;

答案 1 :(得分:1)

您正在寻找某种活动。

public event EventHandler MyButtonClicked;

在使用ShowDialog()之前;

Form2 f2 = new Form2();
f2.MyButtonClicked += f2_MyButtonClicked;
f2.showdialog();

在某处处理事件

void f2_MyButtonClicked(object sender, EventArgs e)
{
    //Here you want to grab your list. You can get f2 from sender.
    Form2 f2 = (Form2)sender;

    throw new NotImplementedException();
}

当您在Form2中单击按钮时,您可以举起活动。

void myButtonClicked(object sender, EventArgs e)
{
    if (MyButtonClicked != null)
    {
        MyButtonClicked(this, new EventArgs()); 
    }
}

如果您想了解更多关于事件的信息,请查看。

http://msdn.microsoft.com/en-us/library/aa645739%28v=vs.71%29.aspx

答案 2 :(得分:0)

也许在form1中创建一个mutator(set)方法。当您希望将数据传递回form1时,请调用mutator方法来更新表单。

答案 3 :(得分:0)

可能最简单的方法是在Form1中拥有一个可公开访问的方法,该方法知道如何处理新项目。然后在Form2中引用Form2对象。 Form2有一个属性,或者您将Form1设置为父Form2 f2 = new Form2(f1)(如果您从f1调用它,则为this)。

现在你有了Form1对象的引用,你可以调用它的方法来处理这个项目。