C#通过窗体关闭事件传递对象

C#通过窗体关闭事件传递对象,c#,forms,events,C#,Forms,Events,我创建了一个表单,用来加载与主表单分离的登录信息/设置。我想知道我该如何将这些信息从一种形式传递到另一种形式 我想你需要使用表单关闭事件(我打算在表单关闭时传递信息)。但我不太清楚该怎么做。不,您通常会使用属性或字段来快速解决问题。以获取信息的形式,从属性返回数据: public readonly int Age { get { return int.Parse(this.txtAge.Text); } } 比如说。然后,在窗体关闭后,您可以像访问任何

我创建了一个表单,用来加载与主表单分离的登录信息/设置。我想知道我该如何将这些信息从一种形式传递到另一种形式


我想你需要使用表单关闭事件(我打算在表单关闭时传递信息)。但我不太清楚该怎么做。

不,您通常会使用属性或字段来快速解决问题。以获取信息的形式,从属性返回数据:

 public readonly int Age {
     get {
         return int.Parse(this.txtAge.Text);
     }
 }
比如说。然后,在窗体关闭后,您可以像访问任何其他属性一样访问它:

 SomeForm someForm = new SomeForm();
 someForm.ShowDialog();
 int userAge = someForm.Age;

有两种方法可以实现这一点。最直接的方法是向helper表单添加一个新事件,该事件在加载登录信息完成时引发。然后,主窗体可以侦听此事件。一旦收到它,它就可以关闭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);
  }
}