2013-0220

通过委托、事件在子窗口和父窗口间传值

作者: momy 分类: 编程开发 0 Comment »
摘要:在做C/S方面的软件开发的时候,难免需要在子窗口事件中操作父窗口的属性或者资源等,有两个方式,一种是发父窗口传递给子窗口,把父窗口的属性或资源设置public,另一种是使用委托事件来处理。

在做C/S方面的软件开发的时候,难免需要在子窗口事件中操作父窗口的属性或者资源等,有两个方式,一种是发父窗口传递给子窗口,把父窗口的属性或资源设置public,另一种是使用委托事件来处理。

下面这种方法是使用委托事件来实现以上功能:

我们以登录为例,子窗体 AccountWindow :

①定义委托:

public delegate void LoginSuccessedDelegate(object sender, LoginSuccessedEventArgs e);
public event LoginSuccessedDelegate LoginSuccessedEvent;

②事件传值:

private void LoginButton_Click(object sender, RoutedEventArgs e)
{
this.Close();
LoginSuccessedEventArgs loginAccount = new LoginSuccessedEventArgs();
loginAccount.Account = "123"+DateTime.Now.Second.ToString();
LoginSuccessedEvent(sender,loginAccount);
}
//定义传值数据类型
public class LoginSuccessedEventArgs : EventArgs
{
public string Account{get;set;}
}

父窗体:

①触发登录事件

private void Login_Click(object sender, RoutedEventArgs e)
{
AccountWindow accountWindow = new AccountWindow(this);

  //注册事件
accountWindow.LoginSuccessedEvent += new AccountWindow.LoginSuccessedDelegate(accountWindow_LoginSuccessedEvent);
accountWindow.ShowDialog();
}

②登录成功事件返回值处理(这个地方我们可以获取到登录返回值,根据返回值操作父窗体属性和资源,省去了传递父窗体给子窗体)

void accountWindow_LoginSuccessedEvent(object sender, AccountWindow.LoginSuccessedEventArgs e)
{
UserInfo.Content ="当前帐号:"+ e.Account;
}

标签: C# 委托 事件 delegate event 阅读: 10613
上一篇: Windows下netsh端口转发进行渗透 - 28956次
下一篇: ASP.NET MVC网站安全开发注意事项 - 12229次

向右滑动解锁留言