1

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

“System.EventArgs”不包含“KeyCode”的定义,并且找不到接受“System.EventArgs”类型的第一个参数的扩展方法“KeyCode”(您是否缺少 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();
        }
    }
}
4

3 回答 3

3

更新:我想通了。你所要做的就是改变

(object sender, EventArgs e)

(object sender, KeyEventArgs e)
于 2012-07-04T01:20:43.460 回答
2

要最大限度地使用 IDE(即 Visual Studio),请键入:textBox1.KeyDown +=TabTab

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


如果您的 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,即当您键入 this:if (e.时,KeyCode将出现在自动完成的下拉列表中。使用 lambda,您不需要知道委托方法的确切签名。

于 2012-07-04T01:27:06.783 回答
0

要将KeyDown事件分配textBox1textBox1_KeyDown,在设计模式下单击文本框并查看属性窗口并单击事件按钮并查找keydown并双击它。在此处输入图像描述

于 2012-12-29T15:33:55.303 回答