mfc固定编辑框输⼊上限和下限_[MFC]编辑框EditControl输⼊
数字范围限制
在MFC中,项⽬需要对编辑框EditControl的数字输⼊范围进⾏限制,主要有以下实现⽅式,各有优缺点,个⼈推荐最后⼀个。
第⼀种:添加变量
为编辑框添加int、float变量的时候,可以填写最⼤值与最⼩值;或者⾃⼰添加代码DDV_MinMaxInt(pDX, m_nNum, 1, 65535);
测试发现:
只有在UpdateData(true)更新变量之后,才会对该变量的值进⾏判断,并弹出对话框提醒。
但仅仅是提醒,关闭提⽰框之后,错误数据仍会显⽰在编辑框上。
注意:⽆UpdateData(true),⽆判断提⽰。
第⼆种:控件的EN_KillFocus事件(失去焦点事件)
当失去焦点时候,UpdateData(true),同步⼀下窗体和相关变量的值,这样⼦系统才能正确判断是否超过设定的范围。
代码如下:
void CParaConfigDlg::OnEnKillfocusReceivergain()
{
UpdateData(true);
if ((m_nReceiverGain))
{
MessageBoxA(_T("数值超过范围!"), _T("错误"), MB_OK);
}
}
有⼀种说法是:只要你输⼊的值不在设定范围⾥,那么你的焦点就不能离开控件,因为会⼀直弹窗提⽰的。
但经过我实际测试了下,发现弹框结束后焦点是离开的,这个只是在失去焦点时进⾏的⼀次判断,超出则提⽰。
当然在这⾥我们可以进⾏如下更改:
void CParaConfigDlg::OnEnKillfocusReceivergain()
{
UpdateData(true);
if ((m_nReceiverGain))
{
MessageBoxA(_T("数值超过范围!"), _T("错误"), MB_OK);
(CEdit*)GetDlgItem(IDC_ReceiverGain)->SetFocus(); //设置焦点
}
}
这样就能保持不输⼊正确格式,焦点就不能离开控件。包括关闭,取消等按钮点击事件。
看了别⼈的⽂章,这⾥可能会有⼀个问题:
程序⽤户可能在输⼊之后没有让编辑框失去焦点,⽽是直接按回车键进⼊下⼀步操作,那么本⽂上⾯所说的则会有问题。
第三种:控件的EN_CHANGE事件(⽂本更改以后显⽰更新事件)
代码都⼀样,同上。
这⾥的问题是:这个事件也是在⽂本改变后进⾏判断提⽰,关闭提⽰后,你改变其他参数,不会再次触发,因为你没有再改变。
即:改变⼀次,触发⼀次。
第四种:控件的EN_UPDATE事件(控件即将显⽰更改的⽂本事件)
代码都⼀样,同上。
这⾥的问题是:这个事件也是在⽂本即将显⽰时进⾏判断提⽰,关闭提⽰后,你改变其他参数,不会再次触发,因为你没有需要再显⽰。
即:需要显⽰⼀次,触发⼀次。
第五种:⾃⼰完善的(个⼈推荐)
以EN_KillFocus事件为例:
void CParaConfigDlg::OnEnKillfocusReceivergain()
{
float aa = m_nReceiverGain;
UpdateData(true);
textbox控件边框设置if ((m_nReceiverGain))
{
MessageBoxA(_T("数值超过范围!"), _T("错误"), MB_OK);
m_nReceiverGain = aa;
UpdateData(false);
}
}
主要是添加了历史数据保存,如果数据不合法,则还原原始数据。
特别提醒下:这种⽅法我使⽤过程中发现EN_UPDATE(),EN_CHANGE()事件有些问题。
例如以EN_UPDATE()为例:数字范围为12-76,我想输⼊26,那么开始输⼊2时就会报错,导致输⼊不了其他值。或者已经为26,我想改为36,也会导致6删除不了。
EN_CHANGE事件应该也会有类似的问题,同理。⾃⼰理解下这个思想,⾃⼰进⾏变通就⾏了。
因此该⽅法最好使⽤EN_KillFocus失去焦点事件。
MFC编辑框换⾏实现
MFC中换⾏实现 在mfc中编辑框允许输⼊多⾏时,换⾏符被表⽰为即“\r\n”,⽤ascii码表⽰为13 10 如果为编辑框中想要输⼊换⾏,就请将编辑框的属性: ...
js限制⽂本框只能输⼊数字⽅法⼩结
有时需要限制⽂本框输⼊内容的类型,本节分享下正则表达式限制⽂本框只能输⼊数字.⼩数点.英⽂字母.汉字等代码. 例如,输⼊⼤于0的正整数  代码如下:
⽤Jquery控制⽂本框只能输⼊数字和字母
⽤Jquery控制⽂本框只能输⼊数字和字母 $.fn.onlyNum = function () { $(this).keypress(function (event) { var eventObj ...
js限制⽂本框只能输⼊数字
JS判断只能是数字和⼩数点1.⽂本框只能输⼊数字代码(⼩数点也不能输⼊)
监听SWT⽂本框只能输⼊数字
在SWT开发中,很多时候需要⽂本框只能输⼊数字(当输⼊字母或者其他字符时为⽆效),这个时候需要给⽂本框设置监听VerifyListener, code 如下: text.addVerifyListen ...
JQuery 限制⽂本框只能输⼊数字和⼩数点
$(function(){ /*JQuery 限制⽂本框只能输⼊数字*/ $(".NumText").keyup(function(){ $(this).val($(this).v ...
js设置⽂本框只能输⼊数字
JS判断只能是数字和⼩数点 1.⽂本框只能输⼊数字代码(⼩数点也不能输⼊)
Vue中⽗⼦组件通讯——组件todolist
⼀.todolist功能开发
pandas数据结构之DataFrame操作
这⼀次我的学习笔记就不直接⽤官⽅⽂档的形式来写了了,⽽是写成类似于“知识图谱”的形式,以供⽇后参考. 下⾯是所谓“知识图谱”,有什么⽤呢? 1.知道有什么操作(英⽂可以不看) 2.展⽰本篇笔记的结构 ...
jquery元素插⼊、删除、清空、⽗⼦级元素
1)jquery元素插⼊
测试
61 origin授控于MATLAB
Linux下onvif客户端关于ipc摄像头的搜索
设备搜索:要访问⼀个IPC摄像头,或者说要调⽤IPC摄像头提供的WEB服务接⼝,就要先知道其IP地址,这就是设备发现的过程,或者叫设备搜索的过程.IPC摄像头⽤的是239.255.255.250(端⼝ ...

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。