黑马程序员_C#事件常用参数说明
来源:互联网 发布:如何在淘宝团购 编辑:程序博客网 时间:2024/05/18 00:51
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
今天看到论坛上一个朋友对事件的参数有迷惑,就写了一个例子说明一下,顺便给自己加深一下印象~~namespace _07自己定义一个登录控件
{
//第一步,定义一个用来实现事件的委托
public delegate void UserLoginDelegate(object sender, UserLoginEventArgs e);
public partial class ucLogin : UserControl
{
public ucLogin()
{
InitializeComponent();
}
//第二步,根据定义好的委托,在要使用事件的类中定义事件变量
public event UserLoginDelegate UserLogin;
//登录按钮的单击事件
private void button1_Click(object sender, EventArgs e)
{
string uid = txtUid.Text.Trim();
string pwd = txtPwd.Text.Trim();
//第三步,根据需求在适当的时候触发事件:登录成功与不成功时,窗口的不同显示,用来直观感受
UserLoginEventArgs evt = new UserLoginEventArgs(uid, pwd);
if (this.UserLogin != null)
{
UserLogin(this, evt);
}
if (evt.IsOK)
{
this.BackColor = Color.Green;
}
else
{
this.BackColor = Color.Red;
}
}
}
public class UserLoginEventArgs
{
public UserLoginEventArgs(string uid, string pwd)
{
this.UserId = uid;
this.UserPassword = pwd;
this.IsOK = false;
}
//定义用户名属性UserId
public string UserId
{
get;
set;
}
//定义用户登录密码属性UserPassWord属性
public string UserPassword
{
get;
set;
}
//用来判断登录成功与否
public bool IsOK
{
get;
set;
}
}
}
file:///C:/Users/Administrator/AppData/Local/youdao/ynote/images/5A7BB817F64B41638B60F6530E5852EA/7C47CC69ECBB4E939916085A70C1950E.jpg
private void Form1_Load(object sender, EventArgs e)
{
//为用户控件注册一个“登录”事件
this.ucLogin1.UserLogin += new UserLoginDelegate(ucLogin1_UserLogin);
}
//当用户登录时,触发,执行该代码
void ucLogin1_UserLogin(object sender, UserLoginEventArgs e)
{
if (e.UserId == "admin" && e.UserPassword == "888")
{
e.IsOK = true;
}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------
第一步:看这个委托定义,第一个参数传了一个object对象,来代表谁调用的,第二个参数传的是“我们需要用到的参数”object sender:
{
为什么定义这两个参数:
1.object类是所有类的基类,也就是说,我可以在知道自己传的是个什么的时候,显式的转换成要操作的类<挺绕的,下文详细说明>
2.这是微软提倡的规范,没办法,人家是老大~
}
UserLoginEventArgs e: 这个是自己定义的类,用于保存要传的参数值,(其实我建议还是从 EventArgs 派生好,符合规范嘛)
这样 上面那个委托传的 UserLoginEventArgs e ,就可以用e.UserId取值啦~~
第二步:定义一个事件,其实事件也就是个委托而已 这样,我们就可以往事件中添加要处理的方法啦~~~ 然后别忘记,要在需要的时候,调用这个委托!!!
第三步,看看这个按钮的点击事件: 然后,就是+=,调用啦: --------------------------------------------------------------------------------------------------------------------------------------------------------------
Ps:
很多事件都是(object sender, EventArgs e)这个样子,第一个参数,代表是哪个对象传的,第二个参数,是要使用的附加参数(可以从EventArgs派生一个类,因为EventArgs里没有成员可以添加我们想要用的参数信息)
假设现有这么两个类: 定义一个事件: 再写一个方法: 这样,我调用这个委托,把People的对象传进去,然后再强制转换一下(因为我知道,我传的就是People类型),就可以访问People的对象啦~~
- 黑马程序员_C#事件常用参数说明
- 黑马程序员_c#
- 黑马程序员_C#中的一些常用函数总结
- 黑马程序员_C语言几个不常用的关键字总结
- 黑马程序员_C# 字符串处理
- 黑马程序员_C#编程基础
- 黑马程序员_C#编程基础
- 黑马程序员_C#基础回顾
- 黑马程序员_C#索引器
- 黑马程序员_C#基础1
- 黑马程序员_C#基础2
- 黑马程序员_C#基础3
- [黑马程序员] _C#基础知识小结
- [黑马程序员] _C#基础知识小结
- 黑马程序员_C#编程基础
- 黑马程序员_C语言概述
- 黑马程序员_C语言基本概念
- 黑马程序员_C语言指针
- Unix下rootkit
- 获取远程文件编码问题
- 代理、肉鸡、跳板的概念
- 关于phpcms v9的404页面实现
- Samba
- 黑马程序员_C#事件常用参数说明
- 备忘录模式
- svn
- 编译nginx时遇到rewrite module requires the PCRE library错误解决简介
- 帝国灵动标签调用任意栏目名称和链接
- 第六章 STOCKFONT
- Mina实现传输对象的编解码
- 选择排序算法
- 《精通Oracle10gPLSQL编程》10、处理例外