首先,事件也就是方法,由消息循环机制体调用(外部输入设备每改变一次都回去检查是否符合某个事件)。
事件有两个参数
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