【问题标题】:How do I add a keyboard shortcut (enter) to my textbox in C#?如何在 C# 中向我的文本框添加键盘快捷键(回车)?
【发布时间】:2016-03-04 05:27:40
【问题描述】:

所以我对编程还是很陌生,我正在尝试创建一个程序,在该程序中,您将在文本框中输入一个数字(仅限 1-9),然后单击 Enter 而不必单击一个按钮让我在第二个标签上显示的文本框中输入的数字。我不断收到两个错误,第一个抛出了

No overload for 'textBox1_TextChanged' matches delegate 'EventHandler'

当我将Key 添加到EventArgs 时(因为EventArgs 不包含Keycode)。第二个是这里的标志:

this.label2.Click += new System.EventHandler(this.label2_Click);    

"CS1061 'Form1' 不包含 'label2_Click' 的定义和 没有扩展方法“label2_Click”接受类型的第一个参数 可以找到“Form1”(您是否缺少 using 指令或 程序集参考?)”

我的代码:

using System;
using System.Windows.Forms;

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

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                label2.Text = textBox1.ToString();
            }
            if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "[^0-9]"))
            {
                MessageBox.Show("Debes de escribir un numero de 1-9");
                textBox1.Text.Remove(textBox1.Text.Length - 1);
            }   
        }

        private void label2_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

【问题讨论】:

  • 错误是自我描述的。 TextChanged 事件不接受 KeyEventArgs。另外,您的班级中没有label2_Click 方法。
  • 您不需要处理TextChanged 事件。在您的表单上放置一个Button 并处理按钮的Click 事件,并在按钮单击事件处理程序中执行您需要的操作。然后将按钮设置为表单的AcceptButton 属性的值就足够了。这样,当你进入时,你的按钮的代码就会执行。
  • 感谢您的回复,但我正在上一门课程,它说我应该使用标签而不是按钮。我尝试将“TextChanged”更改为“KeyPress”和“KeyDown”,因为它不支持“KeyEventArgs”,但我不断收到错误。

标签: c# button overloading eventargs


【解决方案1】:

textBox1_KeyDown 事件添加到视觉设计器中的textBox1.KeyDown 事件或Form1.designer.cs 文件中:

this.textBox1.KeyDown += 
    new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);

然后将以下函数添加到您的代码中。当用户输入一个 1 - 9 的数字并按 Enter 时,它将被复制到 label2

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        Text = DateTime.Now.ToString();
        switch (e.KeyCode)
        {
            case Keys.Enter:
                if (textBox1.Text.Length == 1)
                {
                    char tbChar = textBox1.Text[0];
                    if (tbChar >= '1' && tbChar <= '9')
                    {
                        MessageBox.Show("Correct");
                        label2.Text = tbChar.ToString();

                        // Clear textbox
                        textBox1.Text = "";
                        return;
                    }
                }
                MessageBox.Show("Your input is not a number from 1 - 9");
                break;
        }
    }

另外,你不需要这行,删除它:

this.label2.Click += new System.EventHandler(this.label2_Click);  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2021-08-25
    • 2015-03-26
    • 1970-01-01
    相关资源
    最近更新 更多