Windows窗体具有焦点但不处理键盘事件

时间:2011-08-31 08:43:09

标签: c# .net winforms dialog

我有一个奇怪的问题:

我有一个使用ShowDialog()打开的表单。表单中填充了一些按钮和组合框。其中一个组合框被设置为表单的ActiveControl,表单具有焦点。

我想要完成的是用户可以在表单打开后立即输入其用户名(无需先选择组合框)。但是,如果我按下键盘,则没有任何反应。但是,当我第一次用鼠标单击表单,然后使用键盘输入内容时,它可以工作。我已经尝试过很多东西,比如在窗体上调用Select()和Focus()。我甚至试图在表格上模拟鼠标点击事件(OnMouseClick)而没有任何运气。

有人认为这可能是问题吗?

非常感谢

克里斯

3 个答案:

答案 0 :(得分:2)

尝试BringToFront()

    var f = new Form1();
    f.Show();
    f.BringToFront();

然后只需在该控件上使用Select

    private void Form1_Load(object sender, EventArgs e)
    {
        comboBox1.Select();
    }

答案 1 :(得分:0)

假设您正在从另一个表单运行ShowDialog(),可能需要将其更改为:ShowDialog(this),以便新表单具有正确的父表单和正确的阻塞行为。没有'this',我看到形式在其他形式和其他奇怪的行为背后开放,包括焦点问题。

只是一个想法。

答案 2 :(得分:0)

您是否尝试过调用myComboBox.Focus();

仅仅因为表单具有焦点并不一定意味着表单内的任何控件都具有焦点。还要尝试检查表单和单个控件的onKey事件。这通常可以帮助我诊断究竟有什么焦点。如果表单本身和非控件上的非正式事件,则尝试使用form.Activate();

相关问题