110,535
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestKeyUp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int iEventID = 0;
delegate void MyKeyUp(object o, KeyEventArgs k);
event MyKeyUp OldEvent;
private void Form1_Load(object sender, EventArgs e)
{
SaveEvent();
}
private void Form1_KeyUpA(object sender, KeyEventArgs e)
{
MessageBox.Show("A");
iEventID++;
SaveEvent();
}
private void Form1_KeyUpB(object sender, KeyEventArgs e)
{
MessageBox.Show("B");
iEventID++;
SaveEvent();
}
private void Form1_KeyUpC(object sender, KeyEventArgs e)
{
MessageBox.Show("C");
iEventID = 0;
SaveEvent();
}
private void SaveEvent()
{
switch (iEventID)
{
case 0:
if (OldEvent != null)
{
this.KeyUp -= new System.Windows.Forms.KeyEventHandler(OldEvent);
}
OldEvent = this.Form1_KeyUpA;
this.KeyUp += new System.Windows.Forms.KeyEventHandler(OldEvent);
break;
case 1:
this.KeyUp -= new System.Windows.Forms.KeyEventHandler(OldEvent);
OldEvent = this.Form1_KeyUpB;
this.KeyUp += new System.Windows.Forms.KeyEventHandler(OldEvent);
break;
case 2:
this.KeyUp -= new System.Windows.Forms.KeyEventHandler(OldEvent);
OldEvent = this.Form1_KeyUpC;
this.KeyUp += new System.Windows.Forms.KeyEventHandler(OldEvent);
break;
}
}
}
}
[SRDescription("ControlOnKeyDownDescr"), SRCategory("CatKey")]
public event KeyEventHandler KeyDown
{
add
{
base.Events.AddHandler(EventKeyDown, value);
}
remove
{
base.Events.RemoveHandler(EventKeyDown, value);
}
}
var bindingFlags = System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic;
var eventKeyDown = typeof(Control).GetField("EventKeyDown", bindingFlags).GetValue(null);
KeyEventHandler handler = (KeyEventHandler)base.Events[eventKeyDown];
if (handler != null)
MessageBox.Show("Has Handler");
else
MessageBox.Show("Not Handler");
string str= event==null?"is null":"not null";
BindingFlags myBindingFlags = BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
Type t = typeof(System.Windows.Forms.Control);
EventInfo ei = btnInsert.GetType().GetEvent("KeyUp", myBindingFlags);
FieldInfo fi = t.GetField("EventClick", myBindingFlags);
EventHandlerList ehl = btn.GetType().GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy).GetValue(btn, null) as EventHandlerList;
if (ehl != null)
{
Delegate d = ehl[fi.GetValue(btn)];
if (d != null&&d.GetInvocationList().Count()>0)
{
//已绑定
}
}
private void KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyValue == 37 || e.KeyValue == 39)
//方法0 当输入 37,39时
return;
if (e.KeyCode == Keys.F2)
{
//方法1 当键盘 输入 F2时
return;
}
if (e.KeyCode == Keys.Enter)
{
//方法2当键盘 输入 F2时
return;
}
if (sender == textBox1 && e.KeyCode == Keys.Enter)
{
//方法3 在控件 textBox1里 输入 回车
return;
}
else if (sender == textEdit_Depart_area_name )
{
//方法4 在 控件 textEdit_Depart_area_name 时
return;
}
}