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