Tôi có một DrawingArea mà tôi muốn nhận các sự kiện chuột. Từ hướng dẫn tôi đã tìm thấy rằng KeyPressEvent cũng sẽ bắt các sự kiện chuột. Tuy nhiên đối với mã sau, trình xử lý không bao giờ được gọi.Sự kiện chuột GTK # trong vùng vẽ
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");
}
Tôi đã thử một loạt các điều từ việc đọc các diễn đàn và hướng dẫn khác nhau bao gồm:
Thêm một EventBox để các cửa sổ và đặt DrawingArea trong hộp sự kiện và đăng ký vào các KeyPressEvent cho EventBox. (không hoạt động)
Gọi AddEvents ((int) Gdk.EventMask.AllEventsMask); trên bất kỳ và tất cả các tiện ích
Tôi nhận thấy rằng việc đăng ký Windows KeyPressEvent đã cho tôi sự kiện bàn phím nhưng không cho phép các sự kiện nhấp chuột.
Tất cả các trang có liên quan trong các tài liệu mono cho tôi lỗi vì vậy tôi một chút khó khăn
Nên biết trước: nếu bạn quan tâm trong việc xử lý chỉ có 'ButtonReleaseEvent', ngoài việc thêm' ButtonReleaseMask' vào danh sách các sự kiện, bạn cũng phải thêm 'ButtonPressMask'. Nếu không, đại biểu 'ButtonReleaseEvent' của bạn sẽ không được gọi. –