2013-08-24 2 views
1

Я пытаюсь сделать некоторую форму (C#, WinForms) для небольшой напоминания о программе. Во время этого у меня есть проблема - попробуйте сделать некоторый фильтр для textBox, где пользователь должен ввести время начала события. В результате получилось следующее - при событии KeyPress добавьте код, разрешите вводить только цифры, но также я хочу, чтобы этот пользователь мог вводить только цифры из некоторого диапазона.как ввести в TextBox только цифры от интервала

код:

private void starTimetextBox_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if ((e.KeyChar >= '0') && (e.KeyChar <= '9')) 
     { 
      return; 
     } 
     if (Char.IsControl(e.KeyChar)) 
     { 
      if (e.KeyChar == (char) (Keys.Enter)) 
       startTimeMMtextBox.Focus(); 
     } 
     e.Handled = true; 

    } 

я могу сделать это, не используя это событие или нет?

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

ok, отметил, спасибо – gbk

+0

Почему бы не позволить пользователю вводить какое-либо значение и сообщать ему о недопустимости? –

ответ

1

Попробуйте это: -

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar); 
    } 

ПРИМЕЧАНИЕ: - Вы можете использовать свойство MaxLength TextBox, чтобы ограничить пользователю ввести только две цифры. Чтобы отобразить сообщение пользователю, вы можете использовать TextChanged событие TextBox.

+0

Это не помешает пользователю скопировать и вставить текст –

+0

bu как я могу добавить некоторый диапазон для этого? поскольку я понимаю, что этот код позволяет вводить только цифры и управляющие ключи, но также я хотел бы сделать некоторый код, который позволяет вводить только числа пользователей от 0 до 24, могу ли я сделать это событие/или я должен написать отдельный метод для эта цель? – gbk

+0

@SriramSakthivel: - Чтобы предотвратить совпадение и вставку пользователя, вы можете установить для свойства ShortcutsEnabled текстового поля значение false. –

0

Чтобы создать фильтр с символами от 0 до 9, вы можете продлить предыдущий ответ. (Similair как в вашем примере вопроса).

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) 
        && (e.KeyChar >= '0' && e.KeyChar <= '9'); 
    } 
Смежные вопросы