我想创建一个简单的应用程序,我需要添加一些按钮事件..但是当我尝试向这个事件添加处理程序到任何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!");
}
}
提前致谢
答案 0 :(得分:2)
问题是GTK默认情况下不报告事件(来自鼠标或其他方式)(除了Gtk.Button
之类的一些小部件)。您始终可以通过为Events
属性设置适当的掩码来启用事件报告:
Events |= Gdk.EventMask.ButtonPressMask | Gdk.EventMask.ButtonReleaseMask;
在Window
上设置此值足以让用户点击窗口背景时调用按钮按下事件处理程序。如果您有其他小部件,只需设置其Events
属性并相应地连接您的处理程序。
答案 1 :(得分:0)
这对我有用:
AddEvents((int) (Gdk.EventMask.ButtonPressMask | Gdk.EventMask.ButtonReleaseMask));