我有一个DrawingArea,希望它能接收鼠标事件。
从我找到的教程上看,KeyPressEvent也会捕获鼠标事件。
但是对于以下代码,处理程序从未被调用。
static void Main ()
{
Application.Init ();
Gtk.Window w = new Gtk.Window ("");
DrawingArea a = new CairoGraphic ();
a.KeyPressEvent += KeyPressHandler;
w.Add(a);
w.Resize (500, 500);
w.DeleteEvent += close_window;
w.ShowAll ();
Application.Run ();
}
private static void KeyPressHandler(object sender, KeyPressEventArgs args)
{
Console.WriteLine("key press event");
}
我尝试过从不同的论坛和教程中学习到的很多方法,包括:
在窗口中添加EventBox并将DrawingArea放入EventBox中,然后订阅EventBox的KeyPressEvent事件。(没有起作用)
对所有小部件调用AddEvents((int)Gdk.EventMask.AllEventsMask);
我发现订阅窗口的KeyPressEvent事件确实给了我键盘事件,但没有鼠标点击事件。
所有相关的mono文档页面都给了我错误,所以我有点困惑。
ButtonReleaseEvent
,那么除了将ButtonReleaseMask
添加到事件列表中,你还必须添加ButtonPressMask
。否则,你的ButtonReleaseEvent
委托函数不会被调用。 - Vladimir Mitrovic