如果给定窗口或窗口小部件的属性已更改并找到Gtk.Widget.PropertyNotifyEvent
事件,我希望能够做出反应。 (单声道)文档说如果任何属性被更改,它将被触发。所以我试图使用它,但我的事件处理程序方法永远不会被调用:
protected void DoSomething()
{
Gtk.Window __Window = new Gtk.Window(Gtk.WindowType.Toplevel);
Gtk.Button __Button = new Gtk.Button();
__Window.Add(__Button);
__Button.PropertyNotifyEvent += this.ButtonPropertyChangedEventHandler;
... // Show the window
__Button.Label = Mono.Unix.Catalog.GetString("This is a test button");
}
protected void ButtonPropertyChangedEventHandler(object o, PropertyNotifyEventArgs e)
{
// Handle the event
}
我错过了什么吗?或者我是否理解了一些非常基本的错误?或者还有另一种方法来实现我的目标吗?
答案 0 :(得分:1)
需要通过设置GDK_PROPERTY_CHANGE_MASK
标志明确启用属性更改通知,如下所述:
https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-property-notify-event
在Gtk#中,您只需在代码中添加以下行:
__ Button.Events | = Gdk.EventMask.PropertyChangeMask;
分配给PropertyNotifyEvent
事件的处理程序将开始接收属性更改通知。 Gtk#隐式启用某些事件,但应该从用户代码或stetic设计器启用所有其他事件。