作者unfun (不好玩)
看板C_Sharp
標題[問題] TextBox只允許輸入數字及負號
時間Thu Mar 27 10:30:36 2014
private void endSpeed_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsNumber(e.KeyChar) &&
!Char.IsPunctuation(e.KeyChar) &&
!Char.IsControl(e.KeyChar))
{
e.Handled = true;
}
else if (Char.IsPunctuation(e.KeyChar))
{
if (endSpeed.Text.LastIndexOf('.') != -1)
{
e.Handled = true;
}
if (e.KeyChar == '-')
{
if (this.endSpeed.Text.Length > 0)
e.Handled = true;
}
}
}
目前小弟在網路上搜尋只輸入數字的方法,
東拼西湊之下完成了一個堪用的過濾方式。
其主要的邏輯為
1.先篩選掉非數字浮號的字元
2.小數點只能有一個
3.負號只能在第一位
但現在有個問題了,有幾個方法無法使用
1.當textbox.text內已經有小數點,無法反白(全選)後輸入'.'
2.當textbox.text內有內容,無法反白(全選)後輸入'-'
總而言之我的過濾方式無法排除全選後輸入這種方法,是否有更好的處理方式。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.103.86
※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1395887439.A.D7C.html
推 Eleganse:沒寫過 感覺上可以考慮用正規表示式寫在網頁客端js碼完成 03/27 10:47
→ Eleganse:textbox這個控制項和前端碼及後端碼都很容易操控到 03/27 10:48
→ pkmu8426:我的話會採用 觸發事件 事件中每一次都重新針對 03/27 11:26
→ pkmu8426:textbox中的文字進行整行判斷 03/27 11:27
推 GoalBased:寫js吧 03/27 12:26
→ talenttb:client js keydown 限制 server regular 檢查 03/27 13:07
小弟是C#初學者,以前有一些C++的經驗,
我是要做一個視窗軟體 截圖
http://ppt.cc/GDXR
已經找到解決方法,自問自答一下
http://ideone.com/NKOWRA
※ 編輯: unfun 來自: 220.129.103.86 (03/27 13:41)
→ umi8422:套jquery.validate程式都不用寫 03/28 20:48
→ VVll:if(!double.TryParse(input, out d)) error; 04/01 04:39
推 nfsong:用java 寫在前台 onkeydown return only key 06/05 21:41