mfc提供的cedit控制項,可以設定其屬性為num,也就是限定只能輸入數字,但是,有個問題就是小數點沒法輸入了。
在訂單系統編寫的時候,我想限制價錢和重量的輸入只能是數字,整數或者浮點數。因為都是正數,所以我就沒有考慮負號的因素,有興趣的可以加上這一功能。
所以,只能自己編寫乙個數字的cedit控制項,過程:
1.從標準cedit控制項派生出cnumedit控制項
2.過載cedit的onchar函式,實現輸入字元的限制,只能是小數點和數字,不過還得考慮響應退格鍵。其次,還得考慮小數點的輸入次數,只能為乙個
void cnumedit::onchar(uint nchar, uint nrepcnt, uint nflags)
else // 不是小數點
else // 不是退格鍵,則退出
return;}}
cedit::onchar(nchar, nrepcnt, nflags);
}3.在輸入結束後,模仿cedit的數字規範化的功能,也就是類似0011-->11、11.100 ->11.1 .1100->0.11
過載cedit的onkillfocus函式,在編輯框失去焦點的時候進行規範化
void cnumedit::onkillfocus(cwnd* pnewwnd)
if(i < nlen) // 不是全 0 的情況
m_svalue = m_svalue.left(i + 1); // 去掉了小數後面的0
}nlen = m_svalue.getlength();
if(ndotpos == nlen - 1) // 小數點在最後
if(ndotpos == 0) // 小數點在最開始
m_svalue = "0" + m_svalue;
}else // 全 0
setsel(0, -1);
replacesel(m_svalue);
}
VC限制只能輸入常規數字的CEdit控制項
mfc提供的cedit控制項,可以設定其屬性為num,也就是限定只能輸入數字,但是,有個問題就是小數點沒法輸入了。在訂單系統編寫的時候,我想限制價錢和重量的輸入只能是數字,整數或者浮點數。因為都是正數,所以我就沒有考慮負號的因素,有興趣的可以加上這一功能。所以,只能自己編寫乙個數字的cedit控制項...
C 中限制只能輸入數字
在winform c 中要實現限制textbox只能輸入數字,一般的做法就是在按鍵事件中處理,判斷keychar的值。限制只能輸入數字,小數點,backspace,del這幾個鍵。數字0 9所對應的keychar為48 57,小數點是46,backspace是8。拖乙個textbox到窗體上,新增o...
wpf 字元限制,只能輸入數字
通過keyeventargs.需要引用的命名空間 using system.windows.input using keyeventargs system.windows.input.keyeventargs 引用命名空間為keyeventarges服務,因為keyeventargs表示keydow...