2016-03-04 4 views
0

Так что я все еще очень новичок в программировании, и я пытаюсь создать программу, в которой вы введете число (только с 1-9) в текстовое поле, а затем нажмите «Ввод» вместо того, чтобы нажимать на кнопку чтобы иметь номер, который я написал в текстовом поле, отображаемом на моем втором ярлыке. Я получаю две ошибки, то первый скидываетКак добавить ярлык клавиатуры (введите) в текстовое поле на C#?

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 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) 
     { 

     } 
    } 
} 
+0

Ошибки самостоятельной описания. Событие 'TextChanged' не принимает' KeyEventArgs'. Также у вас нет метода label2_Click в вашем классе. –

+0

Вам не нужно обрабатывать событие TextChanged. Поместите кнопку «Button» в вашу форму и обработайте событие «Click» кнопки и сделайте то, что вам нужно, в обработчике событий нажатия кнопки. Тогда достаточно установить кнопку в качестве значения свойства 'AcceptButton' вашей формы. Таким образом, когда вы входите, код вашей кнопки будет выполнен. –

+0

Спасибо за ответ, но я беру курс, и он говорит, что я должен использовать ярлык и никаких кнопок. Я попробовал изменить «TextChanged» на «KeyPress» и «KeyDown», поскольку он не поддерживает «KeyEventArgs», но я продолжаю получать ошибки. – Dotol

ответ

0

Добавить 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); 

 Смежные вопросы

  • Нет связанных вопросов^_^