日期:2014-05-18  浏览次数:20808 次

请教一下委托的事件如何操作窗体控件?
有个WINFORM,里面委托了个监听键盘输入的事件,如何让键盘的输入显示在WINFORM的textbox1里?下面的代码在 Console.WriteLine里可以,但我想更新form1里的一个textbox1的值/

internal class EventReceiver
{
  public EventReceiver( KeyInputMonitor monitor )
  {
  // 产生一个委托实例并添加到KeyInputMonitor产生的事件列表中
  monitor.KeyDown += new KeyInputMonitor.KeyDownHandler( this.OnKeyDown );
  }

 

  private void OnKeyDown(object sender, KeyEventArgs e)
  {
  // 真正的事件处理函数
  Console.WriteLine( "Capture key: {0}", e.KeyChar );
//这里可以显示出来,但如何显示在TEXTBOX1里?
  }
}



public class MainEntryPoint
{
  public static void Start()
  {
  // 实例化一个事件发送器
  KeyInputMonitor monitor = new KeyInputMonitor();
  // 实例化一个事件接收器
  EventReceiver eventReceiver = new EventReceiver( monitor );
  // 运行
  monitor.Run();
  }
}

------解决方案--------------------
this.Invoke(new SetDeviceName(SetDevice));
SetDeviceName是定义的一个委托
SetDevice是改变控件值的方法,你可以在SetDevice()方法里面改变textbox1的值
------解决方案--------------------
就你运行的错误来说:setdevicename是需要定义的
用delegate关键字,你搜一下怎么定义的。
定义完setdevicename,就可以用new setdevicename(setdevice)了