Combobox onkeypress事件的自动完成功能会占用Enter键

时间:2011-01-21 15:53:29

标签: c# .net winforms autocomplete c#-2.0

我有一个带AutoCompleteMode = suggest的ComboBox并按如下方式处理KeyPress事件:

private void searchBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Return)
    {
        // do stuff
    }
}

但是,它没有捕获Enter密钥。它可以捕获其他所有内容,因为自动完成下拉列表工作正常。

我也尝试了这里提供的建议:http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/2db0b540-756a-4a4f-9371-adbb92409806,将表单的KeyPreview属性设置为true,并在表单的KeyPress事件处理程序中放置一个断点:

private void Form_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = false;
}

但是,即使表单的处理程序没有捕获回车键!

有什么建议吗?

(如果我禁用自动完成功能,则会捕获Enter键)

1 个答案:

答案 0 :(得分:6)

Difference between KeyDown and KeyPress

在您的情况下,您可以做的最好的事情是使用KeyDown事件。

void SearchBox_KeyDown(object sender, KeyEventArgs e)
{
   if(e.KeyCode == Keys.Enter)
    {
        // Do stuff
    }
}

关于KeyPress事件的另一个有趣的事情是:如果组合框没有项目,它甚至可以使用autocompete捕获Enter键! :-)