0

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
}

我错过了什么吗?还是我理解了一些非常基本的错误?还是有其他方法可以实现我的目标?

4

1 回答 1

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 设计器启用。

于 2013-04-24T15:13:03.973 回答