问题:点击button1
发送"a"
键进入主窗口。我该怎么做? (请举例)
using System;
using Gtk;
namespace pressevent
{
class MainClass
{
public static void Main(string[] args)
{
Application.Init();
MainWindow win = new MainWindow();
win.KeyPressEvent += delegate(object o, KeyPressEventArgs a) {
if(a.Event.Key == Gdk.Key.a)
Console.WriteLine("Key pressed");
else
Console.WriteLine("Key not pressed");
};
Button btn1 = win.getButton1();
btn1.Pressed += (sender, e) =>
{
Console.WriteLine("Button1 pressed");
// Here code that send "a" key to MainWindow
};
win.Show(); Application.Run();
}}}
感谢。 PS:对不起,我的英文不好
答案 0 :(得分:0)
你的设计错了。如果按下Button1
,则必须在MainWindow
上调用一个方法,该方法有一个参数:问题的"a"
。
在主窗口上,事件单击调用相同的方法。
一般来说,不要在处理程序中放置逻辑。它们只是包含逻辑的方法的入口点或调度程序。
Application.Init();
MainWindow win = new MainWindow();
win.KeyPressEvent += (sender, e) =>
{
win.MethodWithLogic(e.Event.Key);
};
Button btn1 = win.getButton1();
btn1.Pressed += (sender, e) =>
{
Console.WriteLine("Button1 pressed");
win.MethodWithLogic(Gdk.Key.a);
};
win.Show();
Application.Run();
此外,在MainWindow类中(或通过继承,创建自己的类)
public void MethodWithLogic(Gdk.Key key)
{
if(key == Gdk.Key.a)
Console.WriteLine("Key pressed");
else
Console.WriteLine("Key not pressed");
}
(未经测试,但你明白了)