如果 (e.KeyCode == Keys.Enter) 不起作用

if (e.KeyCode == Keys.Enter) is non-functional

我有这个

    private void toolStripTextBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Enter || e.KeyChar == (char)Keys.Return)
        {
            var items = new[] { 500+ objects here };
            if (toolStripTextBox1.Text.StartsWith("www."))
            {
                webBrowser1.Navigate(toolStripTextBox1.Text);
            }
            if (toolStripTextBox1.Text.StartsWith("http://"))
            {
                webBrowser1.Navigate(toolStripTextBox1.Text);
            }
            if (toolStripTextBox1.Text.StartsWith("https://"))
            {
                webBrowser1.Navigate(toolStripTextBox1.Text);
            }
            if (items.Any(item => toolStripTextBox1.Text.Contains(item)))
            {
                webBrowser1.Navigate(toolStripTextBox1.Text);
            }
            else
            {
                webBrowser1.Navigate("https://www.google.ca/?gws_rd=ssl#safe=active&q=" + toolStripTextBox1);
            }
        }
    }

而且它几乎不起作用。例如。我 运行 它,没有错误,它所做的只是播放 windows 错误声音并且不会起作用....

我知道 if 语句后的代码是有效的,因为我在按钮上有完全相同的代码并且它工作得很好。

确保控件有焦点,或将事件重定向到控件

https://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown%28v=vs.110%29.aspx

在按键事件中使用您的代码,而不是按键事件,这将使事件完全执行并有资格读取按下的键。

我已经调整了你的代码并且它可以工作,你不必使用 KeyChar 只需使用 KeyCode 就可以了。

private void toolStripTextBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Enter || e.KeyValue == (char)Keys.Return)
            //if (e.KeyChar == (char)Keys.Enter || e.KeyChar == (char)Keys.Return)
            {
                var items = new[] { 500 + "objects here" };
                if (toolStripTextBox1.Text.StartsWith("www."))
                {
                    webBrowser1.Navigate(toolStripTextBox1.Text);
                }
                if (toolStripTextBox1.Text.StartsWith("http://"))
                {
                    webBrowser1.Navigate(toolStripTextBox1.Text);
                }
                if (toolStripTextBox1.Text.StartsWith("https://"))
                {
                    webBrowser1.Navigate(toolStripTextBox1.Text);
                }
                if (items.Any(item => toolStripTextBox1.Text.Contains(item)))
                {
                    webBrowser1.Navigate(toolStripTextBox1.Text);
                }
                else
                {
                    webBrowser1.Navigate("https://www.google.ca/?gws_rd=ssl#safe=active&q=" + toolStripTextBox1);
                }
            }

为您的 KeyPress 事件处理程序试试这个:

private void toolStripTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter || e.KeyChar == (char)Keys.Return)
    {
        //Insert code here

听起来问题可能是该方法未绑定到 KeyPress 事件。

在设计器中,单击文本框,然后转到列出所有属性的一侧,应该有一个闪电图标,单击它,然后向下滚动到 KeyPress 并确保它显示 toolStripTextBox1_KeyPress

编辑

或者,您可以通过编程方式添加事件处理程序。在您的 Form_Load 活动中,添加代码

toolStripTextBox1.KeyPress += toolStripTextBox1_KeyPress;

并在您的 Form_Closed 事件处理程序中添加

toolStripTextBox1.KeyPress -= toolStripTextBox1_KeyPress;