我想问一下,
我有一个名为MainWindow的窗口和一个名为ImportForm的窗口。在我调用的MainWindow中
private void generate_Window(int num_chart)
{
Window ownedWindow = new ImportForm(num_chart);
ownedWindow.Owner = this;
ownedWindow.Show();
}在子窗口中,我做了一些东西,并产生了一些变量。比如var1,var2,var3。
我希望当子窗口关闭时,将var1、var2、var3返回给MainWindow,并调用一个函数,比如import_chart(var1, var2, var3)。
任何帮助都将得到批准。谢谢
发布于 2011-12-21 21:00:41
这似乎是一个尴尬的设计选择。不管怎么说,下面是你如何做到的:
MainWindow.cs:
private void generate_Window(int num_chart)
{
Window ownedWindow = new ImportForm(num_chart, import_chart);
ownedWindow.Owner = this;
ownedWindow.Show();
}
private void import_chart(int n, string s, bool b)
{
//Do something
}ImportForm.cs:
private Action<int, string, bool> callback;
public ImportForm(int num_chart, Action<int, string, bool> action)
{
InitializeComponent();
Closed += ImportForm_Closed;
callback = action;
}
private void ImportForm_Closed(object sender, EventArgs e)
{
callback(0, "Test", false);
}只需将操作更改为所需的参数类型(并调整ImportForm_Closed(...)也可以使用它们)。
如果有什么不清楚的地方,请告诉我。
发布于 2011-12-21 20:52:49
如何向您的ImportForm "ImportFinished“添加一个事件,您可以在其中传递您的值作为eventargs。此事件在ImportForm的Close或Closing事件中激发,并在MainWindow中处理。您还可以将ImportForm显示为Modal对话框,并在ShowDialog方法返回时读取值。
发布于 2011-12-21 20:57:40
一种简单的方法是使var1、var2和var3实例变量在父对象的作用域中可见(例如,将它们设为public),然后在MainWindow中附加到Closed事件,并从(ImportForm)sender读取变量。
https://stackoverflow.com/questions/8590055
复制相似问题