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

时间:2016-03-16 22:26:35

标签: c# keycode

我有这个

    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语句之后的代码是有用的,因为我在按钮上有完全相同的代码,它运行正常。

3 个答案:

答案 0 :(得分:1)

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

我已经调整了您的代码并且它有效,您不必使用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);
                }
            }

答案 1 :(得分:0)

答案 2 :(得分:0)

试试这个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;