Mam rysunek terenu, który chciałbym otrzymać zdarzenia myszy. Z samouczków dowiedziałem się, że KeyPressEvent będzie również przechwytywać zdarzenia myszy. Jednak dla następującego kodu obsługa nigdy nie jest wywoływana.GTK # zdarzenie myszy w obszarze rysowania
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");
}
Próbowałem kilka rzeczy, czytając różne fora i samouczków w tym:
Dodawanie EventBox do okien i oddanie DrawingArea w oknie zdarzeń i subskrybowania keyPressEvent dla EventBox. (nie działa)
Wywołanie AddEvents ((int) Gdk.EventMask.AllEventsMask); na wszystkich widgetach:
Odkryłem, że subskrybowanie Windows KeyPressEvent dało mi zdarzenia na klawiaturze, ale nie kliknięcia myszą.
Wszystkie odpowiednie strony w docs mono daje mi błędy, więc jestem nieco zatrzymany
zastrzeżenie: jeśli jesteś zainteresowany obsługą tylko 'ButtonReleaseEvent', a następnie oprócz dodawania' ButtonReleaseMask' do listy zdarzeń, musisz również dodać 'ButtonPressMask'. W przeciwnym razie delegat 'ButtonReleaseEvent' nie zostanie wywołany. –