在.net winform開發中,我們時常需要控制一些控制項的輸入。比如某個textbox用來輸入產品的數量,只能輸入數字;某個combobox表示支付方式: 現金(m)、信用卡(c)、支票(p)等。用滑鼠選擇支付方式當然沒有問題。但是有時候使用者可能是手動輸入,那麼我們不希望使用者手動輸入時,輸入非法的字 母。所以必須控制使用者只輸入這三個字母,而且必須是大寫的。那麼下面就textbox和combobox這兩個控制項做例子來聊聊如何限制控制項輸入。姑且拋 磚引玉,希望大家有更好的方法。
textbox只能輸入數字。當輸入是26個字元或是中文時,不顯示輸入。**如下:
**
code highlighting produced by actipro codehighlighter (freeware)> private void txbmoney_keypress(object sender, keypresseventargs e)
if (char.isdigit(e.keychar) || char.iscontrol(e.keychar) || e.keychar == '.')
else
}
其實這樣控制後,控制項對全形輸入,或是非數字輸入等都能有效的控制,但是我測試的時候發現還是有個問題控制不了:如果我輸入2.12.12這樣的字 符串(非數字),它會視為合法的。結論:還是需要結合正規表示式或是判斷是否數字的**,一起來控制。否則像12.12.12這樣的字串也會視為數字, 引起異常。也就是說這中方法運用只是提高使用者體驗,或是作為一種輔助手段
textbox只輸入字元(英文本元),輸入其它數字、中文等時不顯示輸入。**如下:
**
code highlighting produced by actipro codehighlighter (freeware)> private void txbstring_keypress(object sender, keypresseventargs e)
if (system.text.encoding.default.getbytes(e.keychar.tostring()).length == 2)
if (char.isletter(e.keychar) || char.iscontrol(e.keychar))
else
}
combobox繫結到listlist資料來源上,其中payterm是實體類。它的資料只有m、c、p三個值,當使用者手動輸入時,只能輸入控制項資料來源包含的p,c,m字元,而且輸入小寫c、m、p時應該轉化為大寫
code highlighting produced by actipro codehighlighter (freeware)> private void cmbpayterm_keypress(object sender, keypresseventargs e)
}e.handled = true;
}else
}
WinForm系列(一) 控制項listview
listview控制項使用的時候發現不如datagview控制項好使,很多時候通過dataset集合獲取後,顯示的效果不是自己想要的,比如獲取一些資料庫表名後,顯示的時候很亂。比如想分行顯示,想一行顯示幾個的時候,用起來不是很好用。如載入乙個ds 函式如下 private void loadlsvd...
WinForm控制項與WPF控制項的互動
原文 winform控制項與wpf控制項的互動 這個問題其實也可以理解為 怎樣在wpf xaml中使用winform中的控制項 如picturebox 首先看看xaml 注意下面加粗的部分 c system.windows.forms.picturebox picturebox null void ...
WinForm控制項與WPF控制項的互動
原文 winform控制項與wpf控制項的互動 這個問題其實也可以理解為 怎樣在wpf xaml中使用winform中的控制項 如picturebox 首先看看xaml 注意下面加粗的部分 c system.windows.forms.picturebox picturebox null void ...