如何在事件处理程序中获取gtksharp刷新小部件?

时间:2016-07-16 21:06:33

标签: mono gtk#

我正在尝试获取一个标签小部件,以便在按下某个键时进行更新。由于某些原因,即使Gtk线程正确地注册了按键(例如,将密钥写入控制台),也无法获取标签文本进行更新。这是macos上的单声道4.4.0和gtk-sharp 2.12。

public MainWindow() : base(Gtk.WindowType.Toplevel)
{
    Build();
    this.KeyPressEvent += ToddlerKeyPressEventHandler;
}

public void ToddlerKeyPressEventHandler (object o, Gtk.KeyPressEventArgs args) {
    Gtk.Application.Invoke(delegate {
        string letter = args.Event.Key.ToString();
        this.letterLabel.Text = letter;
        Console.WriteLine(letter);
        this.letterLabel.QueueDraw();
    });
}

1 个答案:

答案 0 :(得分:0)

我认为你错过了一个属性。试试这个:

[GLib.ConnectBeforeAttribute]
public void ToddlerKeyPressEventHandler (object o, Gtk.KeyPressEventArgs args) 
{
    letterLabel.Text = args.Event.Key.ToString ();
}

请记住,如果事件处理程序连接到标签窗口小部件,除非您还确保将该标签窗口小部件的“可选”属性设置为true(已选中),否则这将无效。