VC限制只能輸入常規數字的CEdit控制項

2022-09-17 09:42:12 字數 952 閱讀 2247

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...