J'ai une zone de dessin dans laquelle j'aimerais recevoir des événements de souris. A partir des tutoriels, j'ai trouvé que KeyPressEvent va également attraper les événements de la souris. Toutefois, pour le code suivant, le gestionnaire n'est jamais appelé.GTK # événement de souris dans la zone de dessin
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");
}
J'ai essayé un tas de choses à la lecture de différents forums et tutoriels, y compris:
Ajout d'un EventBox aux fenêtres et de mettre la DrawingArea dans la zone de l'événement et inscrivez-vous à la keyPressEvent pour le EventBox. (n'a pas fonctionné)
Appel AddEvents ((int) Gdk.EventMask.AllEventsMask); sur tous les widgets
J'ai trouvé que l'abonnement à l'événement KeyPressEvent de Windows m'a donné des événements de clavier mais pas d'événements de clic de souris.
Toutes les pages pertinentes dans les docs mono me donnent des erreurs, donc je suis un peu coincé
caveat seulement le 'ButtonReleaseEvent', puis en plus d'ajouter' ButtonReleaseMask' à la liste des événements, vous devez également ajouter 'ButtonPressMask'. Sinon, votre délégué 'ButtonReleaseEvent' ne sera pas appelé. –