Как определить, какой элемент пользовательского интерфейса имеет фокус в 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#. Как мне это сделать?

1 ответ

Решение

В окне GTK (Mainwindow/this) есть реквизит Focus, который возвращает виджет. Вы можете получить и установить его, он должен волновать все "сфокусированные" дочерние элементы контейнера, пока он не достигнет последнего сфокусированного узла.

Итак, обновите ваш пример кода:

public partial class MainWindow : Window
{
    public Widget GetFocusedElement()
    {
        Console.WriteLine (((Widget)this.Focus).Name);
        return this.Focus;
    }
}
Другие вопросы по тегам