Как сослаться на текущий элемент управления (тот, который имеет общий фокус) в C # winform? - PullRequest
1 голос
/ 11 октября 2010

Я привык ссылаться на текущий элемент управления в Access VBA, как это сделать в C # winform?

Ответы [ 2 ]

2 голосов
/ 11 октября 2010

Вы также можете использовать свойство формы ActiveControl .

Я взял код codekaizen и поместил его в форму вместе с таймером и несколькими элементами управления (DataGridView, Panel, а также Button и CheckBox в Panel).Добавил этот код в событие Tick таймера:

private void timer1_Tick(object sender, EventArgs e)
{
    label1.Text = ActiveControl.Name;
    label2.Text = GetFocusedControl().Name;
}

, и они сообщили об одном и том же активном элементе управления, когда я переключался с одного элемента управления на другой.

0 голосов
/ 11 октября 2010

Я не уверен, что есть лучший метод, но P \ Invoke решает это для меня:

private static Control GetFocusedControl()
{
    Control focused = null;
    var handle = GetFocusedControlHandle();

    if (handle != IntPtr.Zero)
    {
        focused = Control.FromHandle(handle);
    }

    return focused;
}

// ...
[DllImport("user32.dll")]
private static extern IntPtr GetFocusedControlHandle();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...