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

How do I determine which UI element has focus in GTK#?

在 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 Window (Mainwindow/this) 上是一个 Focus prop that returns 一个 Widget.您可以获取并设置它,它应该波及所有 'focused' 个容器子节点,直到它到达最后一个聚焦节点。

因此更新您的代码示例:

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