簡體   English   中英

Mono Gtk#:ButtonPressEvent 不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM