我正在尝试获取一个标签小部件,以便在按下某个键时进行更新。由于某些原因,即使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();
});
}
答案 0 :(得分:0)
我认为你错过了一个属性。试试这个:
[GLib.ConnectBeforeAttribute]
public void ToddlerKeyPressEventHandler (object o, Gtk.KeyPressEventArgs args)
{
letterLabel.Text = args.Event.Key.ToString ();
}
请记住,如果事件处理程序连接到标签窗口小部件,除非您还确保将该标签窗口小部件的“可选”属性设置为true(已选中),否则这将无效。