C#.Net里面通过事件调用事件,通过简单了解相信可以帮你解决问题
2010-03-28 21:03
519 查看
今天我又学了一招简单而又实用的招式,名为----事件调用事件。
比如说你有一个按钮事件1,但是在按钮事件2中需要有按钮事件1的动作。这就是事件的调用,跟方法的调用是同一个意思。
从代码当中可以看到Button1的点击事件是使Label1获得TextBox1的值,而Button2的点击事件是使Label2获得TextBox2的值并调用Button1的事件了。也就是说Button2事件里面有一部分是执行了Button1的事件。
这里还有一点需要注意,那就是如果事件是同一类型的话,那你还可以把它当成是方法的调用一样来使用。(都是按钮的点击事件)
可能大家已经关注到事件里面的两个参数,我呀,也不多说,用别人的精华内容来说明吧。大家慢慢体会其中的意思,或者可以去下面的链接去更发现更实在的知识。
Object sender
sender是事件源(被监视的对象,也叫监视对象,事件触发者,本例为热水器,水温达到95℃以上触发事件),表示触发此事件的对象
//比如说你按下按钮,那么sender就是按钮,触发已经预定好的事件处理代码,比如Onclik
EventArgs e
e是事件参数(***EventArgs类对象,根据事件的不同事件参数类型可能不同,但必须继承EventArgs类,比如本例中的 public class BoiledEventArgs : EventArgs ,又根据net的编码规范"继承自EventArgs的类型应该以EventArgs结尾。",所以名称为***EventArgs),包含跟该事件相关的信息,比如参数。这要你自己手动去写代码(已经写好封装了的可以直接拿来用,但如果这样,那么它的名字不再是EventArgs了,而是以EventArgs结尾的一个名称。根据.net编码规范,如果一个函数头中直接使用的是EventArgs,那么代表它不需要使用e来传递特殊参数,你可以在VS中看看EventArgs的定义,看看它都包括了什么内容),它用来辅助你处理事件。还可以传递引用,在方法中直接访问类的成员等。
本例中包含参数temperature。
public class BoiledEventArgs : EventArgs
{
public readonly int temperature;
public BoiledEventArgs(int temperature)
{
this.temperature = temperature;
}
}
//假如"用鼠标点击窗体"这个事件发生,那么e会包含点击的位置等等
归根究底,这个sender和e及其一整套的处理方式,只不过是windows消息机制的另外一种表现罢了!
(摘至:
上面内容的链接为
http://hi.baidu.com/%C9%FA%B4%E6%B5%C4%D7%CA%B1%BE/blog/item/c06f64d1d72e17309b5027f6.html)
比如说你有一个按钮事件1,但是在按钮事件2中需要有按钮事件1的动作。这就是事件的调用,跟方法的调用是同一个意思。
protected void Button1_Click(object sender, EventArgs e) { this.Label1.Text = this.TextBox1.Text; } protected void Button2_Click(object sender, EventArgs e) { this.Label2.Text = this.TextBox1.Text; Button1_Click(null, null); }
从代码当中可以看到Button1的点击事件是使Label1获得TextBox1的值,而Button2的点击事件是使Label2获得TextBox2的值并调用Button1的事件了。也就是说Button2事件里面有一部分是执行了Button1的事件。
这里还有一点需要注意,那就是如果事件是同一类型的话,那你还可以把它当成是方法的调用一样来使用。(都是按钮的点击事件)
protected void Button2_Click(object sender, EventArgs e) { this.Label2.Text = this.TextBox1.Text; Button1_Click(sender, e); }
可能大家已经关注到事件里面的两个参数,我呀,也不多说,用别人的精华内容来说明吧。大家慢慢体会其中的意思,或者可以去下面的链接去更发现更实在的知识。
Object sender
sender是事件源(被监视的对象,也叫监视对象,事件触发者,本例为热水器,水温达到95℃以上触发事件),表示触发此事件的对象
//比如说你按下按钮,那么sender就是按钮,触发已经预定好的事件处理代码,比如Onclik
EventArgs e
e是事件参数(***EventArgs类对象,根据事件的不同事件参数类型可能不同,但必须继承EventArgs类,比如本例中的 public class BoiledEventArgs : EventArgs ,又根据net的编码规范"继承自EventArgs的类型应该以EventArgs结尾。",所以名称为***EventArgs),包含跟该事件相关的信息,比如参数。这要你自己手动去写代码(已经写好封装了的可以直接拿来用,但如果这样,那么它的名字不再是EventArgs了,而是以EventArgs结尾的一个名称。根据.net编码规范,如果一个函数头中直接使用的是EventArgs,那么代表它不需要使用e来传递特殊参数,你可以在VS中看看EventArgs的定义,看看它都包括了什么内容),它用来辅助你处理事件。还可以传递引用,在方法中直接访问类的成员等。
本例中包含参数temperature。
public class BoiledEventArgs : EventArgs
{
public readonly int temperature;
public BoiledEventArgs(int temperature)
{
this.temperature = temperature;
}
}
//假如"用鼠标点击窗体"这个事件发生,那么e会包含点击的位置等等
归根究底,这个sender和e及其一整套的处理方式,只不过是windows消息机制的另外一种表现罢了!
(摘至:
上面内容的链接为
http://hi.baidu.com/%C9%FA%B4%E6%B5%C4%D7%CA%B1%BE/blog/item/c06f64d1d72e17309b5027f6.html)
相关文章推荐
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- asp.net c#的传参中经常使用到中文参数的处理,下面的函数可以解决中文参数的问题
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- 通过注册表修改VC6.0的字体(可以解决在字体设置里面没有可选字体的问题)
- android按钮拖动Button 在up事件中做弹出菜单调用(通过判断坐标解决事件冲突问题)
- 【转】ASP.NET的OnClientClick与OnClick事件【解决了“识别用户在对话框里面选yes或no的问题”】
- asp.net(C#)通过WMI无法获取磁盘卷序列号(硬件信息)的问题解决办
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- 关于在c#中创建用户控件后,winform应用程序在调用中无法通过点击用户控件的子控件为其自动添加事件代码的问题
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- Asp.Net里面调用Microsoft Excel Application DCOM问题终极解决方法
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- 终于解决了在c#里面用鼠标查找窗口的问题,原来如此简单
- 通过注册表修改VC6.0的字体(可以解决在字体设置里面没有可选字体的问题)
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- C#/.Net通过Npgsql 访问PostgreSQL 乱码问题解决
- unity调用Android通过编译 java jar包出现问题解决和简单支付流程
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- 简单快捷解决caffe源代码在其他工程(MFC、QT、win32)中调用的问题
- TroubleShoot:.NET调用Java WebServices的问题解决