Visual C#事件与接口编程实例(4) private void Key_Press(object sender, System.Windows.Forms.KeyEventArgs e) { textBox1.Text = ""; label2.Text = ""; string keyId = e.KeyCode.ToString(); switch (keyId)//判断是否按下方向键 { case "Right": label3.Text = ""; IEvents id1 = new EventClass1(); //实例化一个接口 id1.event1 += new dele(EventFired1);//定义EventClass1中的事件响应方法 id1.FireEvent();//调用EventClass1中的FireEvent方法,触发event1 事件,事件调用EventFired1方法 break; case "Left": label3.Text = ""; IEvents id2 = new EventClass2(); id2.event1 += new dele(EventFired2); id2.FireEvent(); break; case "Down": label3.Text = ""; IEvents id3 = new EventClass3(); id3.event1 += new dele(EventFired3); id3.FireEvent(); break; case "Up": label3.Text = ""; IEvents id4 = new EventClass4(); id4.event1 += new dele(EventFired4); id4.FireEvent(); break; default: label3.Text = keyId; break; } } //EventFired1方法 public void EventFired1() { label2.Text = ""; label2.Text = "You pressed RIGHT arrow key"; } public void EventFired2() { label2.Text = ""; label2.Text = "You pressed LEFT arrow key"; } public void EventFired3() { label2.Text = ""; label2.Text = "You pressed DOWN arrow key"; } public void EventFired4() { label2.Text = ""; label2.Text = "You pressed UP arrow key"; } private void button1_Click(object sender, System.EventArgs e) { Application.Exit(); } } public class EventClass1 : IEvents { public event dele event1; public void FireEvent() { event1(); } } public class EventClass2 : IEvents