Mono Gtk#:ButtonPressEvent不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mono Gtk#:ButtonPressEvent不起作用相关的知识,希望对你有一定的参考价值。
我想创建一个简单的应用程序,我需要添加一些按钮事件..但是当我尝试向这个事件添加处理程序到任何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));
以上是关于Mono Gtk#:ButtonPressEvent不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Mono Gtk#:ButtonPressEvent不起作用