为什么我无法访问System.EventArgs的KeyCode成员?

时间:2012-07-04 01:18:46

标签: c# .net

我做错了什么?这是我得到的错误代码:

  

'System.EventArgs'不包含'KeyCode'的定义,并且没有扩展方法'KeyCode'接受类型'System.EventArgs'的第一个参数可以找到(你是否缺少using指令或汇编引用? )

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BroZer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Reload_Click(object sender, EventArgs e)
        {
            webBrowser1.Refresh();
        }

        private void Go_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate(textBox1.Text);
        }

        private void Back_Click(object sender, EventArgs e)
        {
            webBrowser1.GoBack();
        }

        private void Forward_Click(object sender, EventArgs e)
        {
            webBrowser1.GoForward();
        }

        private void textBox1_KeyDown(object sender, EventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                webBrowser1.Navigate("https://www.google.com/search?&ie=UTF-8&q=" + textBox1.Text);
            }
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

        }

        private void Save_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowSaveAsDialog();
        }

        private void Print_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowPrintPreviewDialog();
        }
    }
}

3 个答案:

答案 0 :(得分:2)

要最大化IDE的使用(即Visual Studio),请输入:textBox1.KeyDown + = Tab Tab

它将为您提供事件委派方法定义的确切签名。


如果您的KeyDown代码非常简单并且您不想将其放在单独的方法上,则可以选择内联代码,即您可以将代码嵌入到lambda中:

textBox1.KeyDown += (s,e) => 
    if (e.KeyCode == Keys.Enter) 
        webBrowser1.Navigate(
            "https://www.google.com/search?&ie=UTF-8&q=" + textBox1.Text);

自动完成仍适用于lambda,即当您输入if (e.时,KeyCode将出现在自动完成的下拉列表中。使用lambda,您无需知道委派方法的确切签名。

答案 1 :(得分:1)

更新:我明白了。你所要做的就是改变

(object sender, EventArgs e)

(object sender, KeyEventArgs e)

答案 2 :(得分:0)

要将KeyDown textBox1事件分配到textBox1_KeyDown,请在设计模式下点击文本框,然后查看属性窗口并点击事件按钮并查找 keydown 并双击它。enter image description here