1. 程式人生 > >關於KeyPress事件只能輸入數字小數的問題

關於KeyPress事件只能輸入數字小數的問題

前一段遇到了這個簡單的問題,但是在網上搜索了一大堆答案,有的五花八門,特別長,還不能用,於是自己寫了一個簡單的程式碼,僅供參考。

其中47是0的ANSI碼,58是9的ANSI碼,8為backspace,46為小數點。

下面的程式碼可以實現,只能輸入數字,而且只有一個小數點。

private void dpivalue_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!((e.KeyChar > 47 && e.KeyChar < 58) || e.KeyChar == 8 || e.KeyChar == 46))
    	e.Handled = true;
    else if (e.KeyChar == 46 && (dpivalue.Text.ToString().Contains(".") || dpivalue.Text.ToString().StartsWith(".")))
    {
        e.Handled = true;
    }
}