C#通过窗体关闭事件传递对象
本文关键字:事件 对象 窗体 | 更新日期: 2023-09-27 18:20:08
我创建了一个表单,用来加载与主表单分离的登录信息/设置。我想知道如何将这些信息从一个表单传递到另一个表单。
我想你需要使用表单关闭事件之类的东西(我本来打算在表单关闭时传递信息)。但我不太确定该怎么做。
不,您通常会使用属性或字段来获得快速解决方案。在获取信息的表单中,从属性返回数据:
public readonly int Age {
get {
return int.Parse(this.txtAge.Text);
}
}
例如。然后,在表单关闭后,您可以像访问任何其他属性一样访问它:
SomeForm someForm = new SomeForm();
someForm.ShowDialog();
int userAge = someForm.Age;
有两种通用方法。最直接的方法是将一个新事件添加到helper表单中,该表单在加载登录信息完成时引发。然后主窗体可以收听此事件。一旦收到它,它就可以关闭辅助窗体。
class LoginInformationEventArgs : EventArgs {
...
}
class HelperForm : Form {
...
public event EventHandler<LoginInformationEventArgs> LoginInformationLoaded;
...
}
class MainForm : Form {
LoginInformationEventArgs _loginInfo;
public void ShowHelper() {
var helper = new HelperForm();
helper.LoginInformationLoaded += delegate (sender, e) {
_loginInfo = e;
helper.Close();
};
helper.Show();
}
}
第二种方法是在辅助窗体上使用属性。窗体负责在关闭前设置这些属性,然后主对话框可以在完成后直接从辅助窗体中读取这些属性。
class LoginInformation {
...
}
class HelperForm : Form {
public LoginInformation { get; set; }
private void OnCompleted() {
LoginInformation = ...
this.Close();
}
}
class MainForm : Form {
public void ShowHelper() {
var helper = new HelperForm();
helper.ShowDialog(this);
Process(helper.LoginInformation);
}
}