有个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();
}
}
{
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();
}
}
没有说如何将结果显示在textbox里
SetDeviceName是定义的一个委托
SetDevice是改变控件值的方法,你可以在SetDevice()方法里面改变textbox1的值
我是C#新手看不懂,请教一下
this.Invoke(new SetDeviceName(SetDevice));写在哪?SetDevice如下写,不知对不
public void SetDevice(string str)
{ textBox1.Text += str;
}结果出以下错误错误 2 非静态的字段、方法或属性“pro.old.textBox1”要求对象引用 D:\pros\2\pro\pro\old.cs 301 13 FB
错误 1 “pro.old.EventReceiver”不包含“Invoke”的定义,并且找不到可接受类型为“pro.old.EventReceiver”的第一个参数的扩展方法“Invoke”(是否缺少 using 指令或程序集引用?) D:\pros\2\pro\pro\old.cs 126 34 FB
错误 2 找不到类型或命名空间名称“SetDeviceName”(是否缺少 using 指令或程序集引用?) D:\pros\2\pro\pro\old.cs 126 45 FB
错误 3 无法通过嵌套类型“pro.old.EventReceiver”来访问外部类型“pro.old”的非静态成员 D:\pros\2\pro\pro\old.cs 126 59 FB
这个写在任何一个窗体类下面的成员函数中就行吧,this指的就是运行的form类。
如果定义的委托有参数,setdevicename有参数,那么setdevice也得有参数,并且在调用的时候应
this.Invoke(new SetDeviceName(SetDevice),new object[]{str});(我忘了啥样子了,大概是这样)
用delegate关键字,你搜一下怎么定义的。
定义完setdevicename,就可以用new setdevicename(setdevice)了