在代码中注册、改变事件

首先,事件也就是方法,由消息循环机制体调用(外部输入设备每改变一次都回去检查是否符合某个事件)。
事件有两个参数
1、object:发生动作的对象。
2、EventArgs :发生动作
绝大多数动作都为 EventArgs 类型的,
 对于键盘和鼠标有KeyPressEventArgs、KeyEventArgs、MouseEventArgs
        控件的paint   PaintEventArgs
              Paint事件的触发时机
              1、窗体显示时触发Paint事件
              2、当窗体无效区域变有效时触发Paint事
              3、人为调用刷新函数时触发Paint事件。
        滚动条事件 ScrollEventArgs
        拖拽事件  DragEventArgs
         验证事件Validating(焦点发生改变时触发)CancelEventArgs
        。。。。。。

事件必须注册,删除删除时必须在“注册表”中删除,一般在可视化编程中IDE会自动注册(如:
在编辑模式双击控件产生事件),若要在代码中产生则要手动注册。
注册方式:通过  [控件名].事件名 += 另一事件名;
          另一事件则就像写函数一样参数类型正确,那么这个事件就会被系统监视并且绑定到
          要发生事件的控件上,一般用委托实现。
          当然也可以删除  “-=”,即实现事件转移,删除原事件,注册性事件。

事件注册样例:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9
10 namespace WindowsFormsApplication1
11 {
12     public partial class Form1 : Form
13     {
14         public Form1()
15         {
16             InitializeComponent();
17             button2.Click += new EventHandler(pp);    //利用委托将自定事件进行绑定;
18         }
19
20         private void button1_Click(object sender, EventArgs e)
21         {
22             label1.Text = "1";
23         }
24         private void pp(object sendr, EventArgs e) {
25             label1.Text = "2";
26         }
27     }
28 }

删除事件、改变事件:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9
10 namespace WindowsFormsApplication1
11 {
12     public partial class Form1 : Form
13     {
14         public Form1()
15         {
16             InitializeComponent();
17
18             button2.Click += new EventHandler(button1_Click);    //先将其事件注册为Button1的点击事件
19                                                                   //点击2与点击1是一样的
20         }
21
22         private void button1_Click(object sender, EventArgs e)
23         {
24             label1.Text += "按钮一事件已触发";                 //为了可以看出按钮2是否有效
25             button2.Click -= new EventHandler(button1_Click);       //点击按钮1后删除按钮一对它的绑定
26             button2.Click+=new EventHandler(bu2);                   //为其注册新事件
27         }
28
29         private void bu2(object d, EventArgs e) {                  //新事件
30             label1.Text = "按钮二现在有它自己的事件了,不在去实现按钮1的事件了";
31         }
32     }
33 }
时间: 2024-08-01 22:37:55

在代码中注册、改变事件的相关文章

关于在Cocos2dx中注册触摸事件——Lua

关于在Cocos2dx中注册触摸事件,之前一直对此一知半解,这两天在看引擎的源码,趁此机会写下来... 以下纯属个人理解,如有不对欢迎指正... 在引擎的CCLayer类中声明了有四个方法: 1 virtual bool onTouchBegan(Touch *touch, Event *unused_event); 2 virtual void onTouchMoved(Touch *touch, Event *unused_event); 3 virtual void onTouchEnde

代码中动态改变布局属性RelativeLayout.LayoutParams.addRule()

我们知道,在 RelativeLayout 布局中有很多特殊的属性,通常在载入布局之前,在相关的xml文件中进行静态设置即可. 但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的布局排列方式,这时候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,该方法有两种重载方式: addRule(int verb) :用此方法时,所设置节点的属性不能与其它兄弟节点相关联或者属性值为布尔值(布尔值的属性,设置时表示该属性为 true,不设置就

在Android java代码中如何改变文件的权限

在LINUX下每个文件都有一个权限的属性 ,那么在Android中怎么用java改变某个文件的权限呢? Android中有两种方法可以改变文件的权限 1. 用openFileOutput方法: FileOutputStream fos; fos = openFileOutput("filename", MODE_WORLD_READABLE);  FileOutputStream android.content.ContextWrapper .openFileOutput(String

在带(继承)TextView的控件中,在代码中动态更改TextView的文字颜色

今天由于公司项目需求,须要实现一种类似tab的选项卡,当时直接想到的就是使用RadioGroup和RadioButton来实现. 这种方法全然没问题.可是在后来的开发过程中,却遇到了一些困扰非常久的小困难.大概需求是:在代码中.动态的获取tab的个数,然后初始化RadioGroup,每个tab相应一个RadioButton,即加入一个tab就要向RadioGroup中add一个RadioButton,然后在button选中时要更改文字颜色.由于是动态加入,所以无法在xml中配置了RadioBut

GridView中的GridView1_RowCommand事件

GridView1_RowCommand事件是GridView中生成事件时激发 比如说页面中有一个按钮给他设置CommandName属性 <asp:Button ID="btnCheHui" runat="server" class="btn btn-primary" Text="撤回流程" OnClientClick="return confirm('你确定要撤回流程吗')"  CommandNam

My.Ioc 代码示例——利用 ObjectBuilderRequested 事件实现延迟注册

在使用 Ioc 框架时,一般我们建议集中在一个称为 Composition Root(其含义请参见下面的小注)的位置来注册 (Register) 和解析 (Resolve) 服务.该做法的目的在于通过限制 Ioc 的使用场合,尽量减少应用程序本身对于 Ioc 框架的依赖. 这种模式固然能够很好地解耦应用程序和 Ioc 框架,使我们能够在需要的时候方便地更换 Ioc 框架,但它同时也带来了一个问题:难道我们一定要在程序启动时注册所有服务吗?有些服务并不一定会马上用到,有一些服务甚至可能不会用到.在

Android 监听EditView中的文本改变事件

android中的编辑框EditText也比较常用,那比如在搜索框中,没输入一个字,下面的搜索列表就显示有包含输入关键字的选项,这个输入监听怎么实现的呢? 我们可以建一个例子,效果图如下: 我们可以监听光标处在哪个位置,选择了几个字符并处理,输入了几个字符 先新建布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.a

正确处理WPF中Slider值改变事件的方式

最近在用WPF数据绑定重写一下播放器项目时遇到的关于Slider的问题,在窗体透明度调节和播放进度调节上用了Slider控件.调节窗体透明度我是 这么想的:将窗体的Opacity属性的值与Slider的值绑定不就可以了,Opacity="{Binding ElementName=Slider,Path=Value,Mode=OneWay}",这样根本不用处理Slider的值改变事件 (ValueChanged).不过我要做保存设置的功能,因此肯定要记录Slider的值咯,于是处理一下V

jQuery表单验证插件----通过name属性来关联字段来验证,改变默认的提示信息,将校验规则写到 js 代码中

一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二. 添加一个另外一个插件jquery.validate.messages_cn.js. 改变默认提示方式. 三.jQuery表单验证插件----通过name属性来关联字段来验证,将校验规则写到 js 代码中. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.