如何确定gtk#中哪个UI元素具有焦点?

本文关键字:元素 焦点 UI 何确定 gtk# | 更新日期: 2023-09-27 18:04:03

在c#中很容易找到有焦点的元素;你只需要这样做:

using System.Windows;
using System.Windows.Input;
namespace Whatever
{
    public partial class MainWindow : Window
    {
        public IInputElement GetFocusedElement()
        {
            return FocusManager.GetFocusedElement(this);
        }
    }
}

我想在Mono/gtk#中做大致的等效。我该怎么做呢?

如何确定gtk#中哪个UI元素具有焦点?

在GTK窗口(Mainwindow/this)上是一个Focus prop,它返回一个Widget。您可以获取并设置它,它应该通过所有"聚焦"的容器子节点涟漪,直到它到达最后一个聚焦节点。

所以更新你的代码示例:

public partial class MainWindow : Window
{
    public Widget GetFocusedElement()
    {
        Console.WriteLine (((Widget)this.Focus).Name);
        return this.Focus;
    }
}