Хотя вы не детализировали, что вы имели в виду, это не сработало, фокусировка имеет много аспектов традиционно.
1. Явные фокусировки
Вызов Focus()
метода управления является таким же, как установка ActiveControl
формы контейнера. Если CanFocus
возвращает true (ваш контроль и все его родители видны и включены), он работает; однако у вас не будет визуальной обратной связи, за исключением некоторых косвенных намеков, например. первоначально сфокусированное управление (кнопка или текстовое поле) теряет фокус.
Для визуализации сфокусированного состояния вы можете использовать некоторые пользовательские краски:
protected override void OnPaintBackground(PaintEventArgs e)
{
e.Graphics.Clear(Focused ? SystemColors.Highlight : SystemColors.Control);
}
Если вы получите непосредственно от Control
вместо UserControl
, переопределить следующие два метода, чтобы заставить перекрасить об изменении сфокусированного состояния:
protected override void OnGotFocus(EventArgs e)
{
Invalidate();
base.OnGotFocus(e);
}
protected override void OnLostFocus(EventArgs e)
{
base.OnLostFocus(e);
Invalidate();
}
2.Фокусировка с помощью мыши
Чтобы получить фокус, нажав на кнопку управления добавить эту строку в конструктор:
SetStyle(ControlStyles.Selectable, true);
Если вы получить непосредственно от Control
вместо UserControl
, переопределения OnMouseDown
тоже:
protected override void OnMouseDown(MouseEventArgs e)
{
if (!Focused)
Focus();
base.OnMouseDown(e);
}
3. Фокусировка на клавиатуре
Чтобы получить фокус на TAB ключ просто установите TabStop
собственности на true
и отрегулируйте TabOrder
.
В 'UserControls' содержатся другие элементы управления? Если это так, вы можете сосредоточиться на одном из них. – adv12
this.ActiveControl = YourControl; –
Установите ActiveControl, как прокомментировали другие. Кроме того, это ваш UserControls! Если вы дадите им общедоступный метод и код FocusOnMe(), этот метод позволяет установить фокус там, где вы хотите, тогда ваша форма может сказать myUserControl.FocusOnMe(). –