尝试为教科书实现“Enter”事件处理程序

时间:2015-07-23 18:05:01

标签: c# wpf

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Text.RegularExpressions;
using Microsoft.VisualBasic;



namespace HelloWorld
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        string filePathTEST = "";



        public MainWindow()
        {
            InitializeComponent();
            // Clearing text event handlers
            textBox1.GotFocus += textBox1_GotFocus;


            // Enter event handlers for textboxes
            textBox1.KeyDown += new System.Windows.Input.KeyEventHandler(textBox1_KeyDown);



        }

 static void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                //enter key is down
            }
        }

我尝试运行上述代码时遇到的错误如下:

  

无法隐式转换类型   'System.Windows.Forms.KeyEventHandler'来   'System.Windows.Input.KeyEventHandler'

然后我尝试将代码更改为System.Windows.Input,然后我得到以下内容:

  

错误1'System.Windows.Input.KeyEventArgs'不包含   'KeyCode'的定义,没有扩展方法'KeyCode'接受a   'System.Windows.Input.KeyEventArgs'类型的第一个参数可以是   发现(您是否缺少using指令或程序集引用?)

我这样做的全部意义在于,当我在文本框中按Enter键时,我想在该文本框中输入文本并用它填充某个文本文件,但我不知道该怎么做。< / p>

2 个答案:

答案 0 :(得分:1)

由于您添加了名称空间,编译器认为您的意思是使用'System.Windows.Forms.KeyEventHandler'。{/ 1}}。

删除此行,您的代码应该有效:

System.Windows.Forms

其次,您应该使用Key而不是using System.Windows.Forms; ,因为这是WPF变体:

KeyCode

答案 1 :(得分:0)

你对Windows客户端开发相当混乱的状态犯了错误。 System.Windows.Forms是WinForms库的一部分,WinForms库是.NET 1.0附带的原始UI框架。您正在使用的项目是用WPF(Windows Presentation Framework)编写的,它是在.NET 3中开始发布的新库。它有很多重叠,但这两个库是独特的。

您想要的类是System.Windows.Input.KeyEventArgs。如果你在MSDN上找到这个类的文档,你会发现它实际上没有KeyCode属性。但是,它确实有一个Key属性,可以做你想要的。

我将实际发现并阅读MSDN文档,作为读者的练习。 : - )