而不是拋出一個錯誤,當他們進入不正確的輸入類型的用戶,進入任何東西,但數字開始與阻止他們。
事件
在文本框使用一個按鍵事件,像這樣:
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
// Get reference to calling control
TextBox textBox = sender as TextBox;
// Only allow 0-9, ., -
if (!char.IsControl(e.KeyChar) &&
!char.IsDigit(e.KeyChar) &&
e.KeyChar != '-' &&
e.KeyChar != '.')
{
e.Handled = true;
}
// Avoid double decimals
if (e.KeyChar == '.' && textBox.Text.IndexOf('.') > -1)
{
e.Handled = true;
}
// Ensure hyphen is at the beginning
if (e.KeyChar == '-' &&
(textBox.Text.Contains('-') ||
textBox.SelectionStart != 0))
{
e.Handled = true;
}
}
這將只允許數值,小數,並且要輸入連字符。此外,這還會阻止輸入中的1位十進制.
,並確保用戶只能在文本的開頭輸入連字符-
。
註冊事件處理
註冊此事件處理程序只需添加這行代碼到你的構造函數形式。
// Be sure to change yourtextcontrol to the appropriate name.
yourtextcontrol.KeyPress += new KeyPressEventHandler(textBox_KeyPress);
驗證輸入
您還應該使用TryParse
在點擊事件要仔細檢查的條目。
private void buttonMul_Click(object sender, KeyPressEventArgs e)
{
if (double.TryParse(textOperand1.Text, out Operand1) &&
double.TryParse(textOperand2.Text, out Operand2))
{
result = Operand1 * Operand2;
textresult.Text = result.ToString();
}
else
{
// Error here. You can use a messagebox or whatever suits you.
}
}
看看'Double.TryParse'方法 – dcg
您可以使用try和catch塊,並創建消息在catch塊彈出框。這將顯示的是try塊不起作用。或者你可以使用Double.TryParse()方法。 –
我建議你防止用戶在第一個地方輸入無效輸入,而不是讓他們輸入無效輸入,然後在它們上面播放「gotcha」類型的錯誤消息。 –