[英]Mono Gtk#: ButtonPressEvent not work
我想創建一個簡單的應用程序,我需要在其中添加一些按鈕按下事件。但是當我嘗試將此事件的處理程序添加到任何 Widget(按鈕除外)時,它只是不起作用。
當我在窗口中的任意位置單擊時,它不會打印任何內容。 我能做什么? 我已經遵循(或嘗試遵循)這個簡單的教程:http: //mono-project.com/GtkSharpBeginnersGuide
這是我的代碼:
public partial class MainWindow : Gtk.Window
{
public MainWindow (): base (Gtk.WindowType.Toplevel)
{
ButtonPressEvent += new ButtonPressEventHandler(ButtonPressHandler);
ButtonPressEvent += delegate {Console.WriteLine("test 1");};
SetDefaultSize(50, 50);
SetPosition(WindowPosition.Center);
DeleteEvent += new DeleteEventHandler(OnDeleteEvent);
VBox vbox = new VBox(false, 2);
MenuBar mb = new MenuBar();
Menu filemenu = new Menu();
MenuItem file = new MenuItem("Soubor");
file.Submenu = filemenu;
mb.Append(file);
vbox.PackStart(mb, false, false, 0);
GuiBoard board = new GuiBoard(3, 3, true);
board.Board = new Board(5, 7);
vbox.PackStart(new Entry(), false, false, 0);
vbox.PackEnd(board, true, true, 0);
Add(vbox);
ShowAll();
}
protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
Application.Quit ();
}
protected void ButtonPressHandler(object obj, ButtonPressEventArgs args)
{
Console.WriteLine("test!");
}
}
提前致謝
問題是GTK默認情況下不報告事件(來自鼠標或其他)(除了像Gtk.Button
這樣的小部件)。 您始終可以通過為Events
屬性設置適當的掩碼來啟用事件報告:
Events |= Gdk.EventMask.ButtonPressMask | Gdk.EventMask.ButtonReleaseMask;
在Window
上設置它足以讓用戶點擊窗口背景時調用按鈕按下事件處理程序。 如果您有其他小部件,只需設置其Events
屬性並相應地連接您的處理程序。
這對我有用:
AddEvents((int) (Gdk.EventMask.ButtonPressMask | Gdk.EventMask.ButtonReleaseMask));
Gtk
沒有獲取您正在使用的ButtonPressEvent
。 為此,您可以使用[Glib.ConnectBefore]
來使用ButtonPressEvent
。 那對我有用。
像:
[GLib.ConnectBefore]
protected void ButtonPressHandler(object obj, ButtonPressEventArgs args)
{
Console.WriteLine("test!");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.