2016-09-20 2 views
0

Я новичок в C#, я пытаюсь реализовать приведенный ниже код, но заметил, что текстовое поле textbox.text хотя бы объявлено только одной цифрой, но объявлено как intC# Как разрешить моему textbox.text принимать более одной цифры

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     int RegionIDInput; 

     if (int.TryParse(textBox1.Text, out RegionIDInput)) 
     { 
      if (RegionIDInput > 254 || RegionIDInput < 1) 
      { 
       MessageBox.Show("Enter valid value"); 
       RegionIDInput = Convert.ToInt32(textBox1.Text); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Enter Numeric Value"); 
     } 

    } 
+0

Обратите внимание, что код преобразует текст дважды. Удалить 'RegionIDInput = Convert.ToInt32 (textBox1.Text);' –

+0

Вы пытаетесь сделать числовое текстовое поле, которое принимает значение только от 1 до 254? – Rohit

+0

спасибо, что это отлично сработало – sunshine

ответ

1

Событие TextChanged Событие запускается на каждом знаке, введенном пользователем, и это является причиной проблемы. Вы можете обрабатывать Leave событие:

private void textBox1_Leave(object sender, EventArgs e) 
{ 
    int RegionIDInput; 
    if (int.TryParse(textBox1.Text, out RegionIDInput)) 
    { 
     if (RegionIDInput > 254 || RegionIDInput < 1) 
     { 
      MessageBox.Show("Enter valid value"); 
      this.ActiveControl = textBox1; 
     } 
    } 
    else 
    { 
     MessageBox.Show("Enter Numeric Value"); 
     this.ActiveControl = textBox1; 
    } 
} 

Обратите внимание, что ваш код преобразованный текст в два раза. Поэтому я удалил избыточный RegionIDInput = Convert.ToInt32(textBox1.Text);

+0

Вы должны рассмотреть возможность установки фокуса обратно в текстовое поле, когда окно сообщения исчезает, поэтому пользователь может напрямую вводить текст. – HimBromBeere

0

Вам нужно отключить TextBox2 изначально:

this.textBox2.Enabled = false; 

Затем измените первое текстовое поле обработчика событий Leave так:

private void textBox1_Leave(object sender, EventArgs e) 
{ 
    int RegionIDInput; 
    if (int.TryParse(textBox1.Text, out RegionIDInput)) 
    { 
     if (RegionIDInput < 1 || RegionIDInput > 254) 
     { 
      MessageBox.Show("Enter valid value"); 
      this.ActiveControl = textBox1; 
     } 
     else 
     { 
      this.textBox2.Enabled = true; 
     } 
    } 
    else 
    { 
     MessageBox.Show("Enter Numeric Value"); 
     this.ActiveControl = textBox1; 
    } 
} 
Смежные вопросы