Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > ToolStripComboBox и фокус ввода


Автор: snav 8.9.2007, 12:27
Разрабатываю MDI-приложение для работы с графическим документом. Документ отображается в форме MDI-child. В главном окне (MDI-parent) есть панель ToolStrip, содержащая ToolStripComboBox. С помощью этого комбо-бокса пользователь должен менять масштаб отображения документа. Когда пользователь устанавливает в комбо-боксе новое значение, программа должна вернуть фокус форме документа (окну MDI-child). Но добиться этого никак не удается, фокус упрямо остается в комбо-боксе. Прямая передача фокуса не работает:

private void toolComboBox_KeyDown (object sender, KeyEventArgs e)
{
    if ( e.KeyCode == Keys.Enter )
        ActivMdiChild.Focus();
}

Вызов функции ActivMdiChild.Activate() тоже не помогает.
Если кто сталкивался с такой проблемой, подскажите в чем дело.

Автор: Freak_FB 12.9.2007, 15:29
Делается всё просто.
Делаю так:
Код

private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
  ChildForm child = ActiveMdiChild as ChildForm;
  child.SetFocus();
}

Где SetFocus определена в самом класе дочернего окна:
Код

public void SetFocus()
{
  textBox1.Focus();
}

Это у меня на дочернем окне поле для ввода текста находится

Автор: snav 12.9.2007, 19:01
Такой способ мне уже подсказали. Я его сейчас использую. Но это всё-таки левый вариан. Хочется сделать по-нормальному... и хочется понять почему вызов ActiveMdiChild.Focus() не работает...
Хотя, есть подозрение, что это просто еще один глюк .NET 2.0.

Автор: Legolas 11.1.2008, 00:31
Freak_FB, а можно ли так сделать если метод ставишь на кликанье на самом контроле: 
Код

 private void axWindowsMediaPlayer1_ClickEvent_1(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e)
        {     
            Form1 frm1 = new Form1();         
            frm1.Set_Focus();
        }

public void Set_Focus()
        {
            Form1.ActiveForm.Focus();
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)