0

问题:点击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:对不起我的英语不好

4

1 回答 1

0

你的设计是错误的。如果Button1按下它,它必须调用一个MainWindow有一个参数的方法:"a"你的问题。

在主窗口中,事件 click 调用相同的方法。

一般来说,不要把逻辑放在你的处理程序中。它们只是包含逻辑的方法的入口点或调度程序。

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");
}

(未经测试,但你明白了)

于 2012-10-30T18:43:47.887 回答