c) 通过事件(参数)传递
首先,给Form2添加事件参数类型和事件处理委托的定义,代码如下:
#region 使用事件
public event LoginEventHandler Login;
public class LoginEventArgs : EventArgs
{
string m_userName;
public string UserName
{
get
{
return m_userName;
}
set
{
if(value != null)
m_userName = value;
else
m_userName = String.Empty;
}
}
public LoginEventArgs(string userName)
{
this.UserName = userName;
}
}
public delegate void LoginEventHandler(object sender, LoginEventArgs e);
#endregion
然后,在Form2中合适的地方,即用户希望触发数据传递时,触发这个事件,代码如下:
if(this.Login != null)
this.Login(this, new LoginEventArgs(m_txtUserName.Text));
this.DialogResult = DialogResult.OK;
同样,在Form1中,除了需要创建并显示Form2之外,还要为Form2的对象添加一个事件处理方法,代码如下:
Form2 f = new Form2("guest");
f.Login += new Form2.LoginEventHandler(f_Login);
f.ShowDialog();
上面讲述的三种方法,效果都是一样的,如下图所示: