Я использую С#.NET 3.5, и у меня есть проблема в моем проекте. В приложении С# Windows я хочу, чтобы textbox
принимал только числа. Если пользователь пытается ввести символы, сообщение должно появляться как "пожалуйста, введите только цифры", а в другом текстовом поле оно должно принять достоверное сообщение email id
, если оно недействительно. Он должен показывать неверный идентификатор пользователя.
С# Только числовой элемент управления TextBox
Ответ 1
Я предлагаю, вы используете MaskedTextBox: http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx
Ответ 2
Из С# 3.5 Предполагаю, что вы используете WPF.
Просто сделайте двустороннюю привязку данных из свойства integer в текстовое поле. WPF автоматически покажет ошибку проверки.
В случае с электронной почтой сделайте двустороннюю привязку данных из свойства string, которое проверит проверку Regexp в установщике и выбросит исключение после ошибки проверки.
Посмотрите ссылку на MSDN.
Ответ 3
используйте этот код:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
const char Delete = (char)8;
e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != Delete;
}
Ответ 4
Вы можете попробовать int.TryParse(string, out int)
в событии KeyPress(object, KeyPressEventArgs)
, чтобы проверить числовые значения. Для другой проблемы вы можете использовать регулярные выражения.
Ответ 5
Я использовал TryParse, который упоминал @fjdumont, но в проверяющем событии.
private void Number_Validating(object sender, CancelEventArgs e) {
int val;
TextBox tb = sender as TextBox;
if (!int.TryParse(tb.Text, out val)) {
MessageBox.Show(tb.Tag + " must be numeric.");
tb.Undo();
e.Cancel = true;
}
}
Я привязал это к двум различным текстовым полям в моей инициализации кода.
public Form1() {
InitializeComponent();
textBox1.Validating+=new CancelEventHandler(Number_Validating);
textBox2.Validating+=new CancelEventHandler(Number_Validating);
}
Я также добавил tb.Undo()
для отмены неверных изменений.
Ответ 6
этот путь прав со мной:
private void textboxNumberic_KeyPress(object sender, KeyPressEventArgs e)
{
const char Delete = (char)8;
e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != Delete;
}
Ответ 7
Вы можете проверить значение Ascii по e.keychar в событии KeyPress в TextBox.
Проверяя значение AscII, вы можете проверить число или символ.
Аналогичным образом вы можете написать логику, чтобы проверить идентификатор электронной почты.
Ответ 8
ПОПРОБУЙТЕ ДАННЫЙ КОД
// Boolean flag used to determine when a character other than a number is entered.
private bool nonNumberEntered = false;
// Handle the KeyDown event to determine the type of character entered into the control.
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
// Initialize the flag to false.
nonNumberEntered = false;
// Determine whether the keystroke is a number from the top of the keyboard.
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
// Determine whether the keystroke is a number from the keypad.
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
// Determine whether the keystroke is a backspace.
if (e.KeyCode != Keys.Back)
{
// A non-numerical keystroke was pressed.
// Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = true;
}
}
}
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (nonNumberEntered == true)
{
MessageBox.Show("Please enter number only...");
e.Handled = true;
}
}
Источник http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=VS.90).aspx
Ответ 9
Я думаю, это поможет вам
<script type="text/javascript">
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 32 && (charCode < 48 || charCode > 57) && (charCode != 45) && (charCode != 43) && (charCode != 40) && (charCode != 41))
return false;
return true;
}
Ответ 10
try
{
int temp=Convert.ToInt32(TextBox1.Text);
}
catch(Exception h)
{
MessageBox.Show("Please provide number only");
}