限制CEdit 只输入小数的两种方法
两种方法均来自互联网,仅为了收录
方法一:
新建一个类并且继承类CEdit,重写消息WM_CHAR
添加代码:
void CDoubleEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString strEdit;
GetWindowText(strEdit);
int length=strEdit.GetLength();
int pos=strEdit.Find('.');
//8是退格,是小数点,具体参考键盘常用ASCII码
if((nChar>=48 && nChar<=57) || nChar==46 || nChar==8)
{
if(nChar==8)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
return;
}
if(((length-pos)<=2 && pos!=-1 && nChar!=46) || pos==-1 )
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
}
}
方法二:
添加CEdit的ON_CHANGE事件
代码如下:
void CDlgTestDlg::OnEnChangeEdit2()
{
// TODO: 如果该控件是RICHEDIT 控件,它将不
// 发送此通知,除非重写CDialog::OnInitDialog()
// 函数并调用CRichEditCtrl().SetEventMask(),
// 同时将ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
CString csAreaS;
GetDlgItem( IDC_EDIT2 )->GetWindowText( csAreaS );
// 只允许输数据
int nStringLength = csAreaS.GetLength();
int nDotCount = 0;
// 点字符不能多于个
for ( int nIndex = 0; nIndex < nStringLength; nIndex++ )
{
if ( csAreaS[ nIndex ] == '.' )
{
nDotCount++;
if ( nDotCount > 1 )
{
CString csTmp;
csTmp = csAreaS.Left( nIndex );
csTmp += csAreaS.Right( csAreaS.GetLength() - nIndex - 1 );
//csRadius = csRadius.Left( nIndex + 1 ) + csRadius.Right( nStringLength - ( nIndex + 1 ) - 1 );
GetDlgItem( IDC_EDIT2 )->SetWindowText( csTmp );
return;
}
}
}
// 不允许输入数字和点以外的字符
for ( int nIndex = 0; nIndex < nStringLength; nIndex++ )
{
if ( csAreaS[ nIndex ] != '.' && ( csAreaS[ nIndex ] > '9' || csAreaS[ nIndex ] < '0' ) )
{
csAreaS = csAreaS.Left( nIndex ) + csAreaS.Right( csAreaS.GetLength() - nIndex - 1 );
GetDlgItem( IDC_EDIT2)->SetWindowText( csAreaS );
return;
}
}
}
转载于:https://www.cnblogs.com/luoshupeng/archive/2011/09/12/2174289.html
限制CEdit 只输入小数的两种方法相关推荐
- php 保留两位小数的两种方法
php 保留两位小数的两种方法 echo sprintf("%.2f", 2.136); //四舍五入 echo "<br/>"; echo (in ...
- TextBox控件中只输入整数的几种方法
方法一. if(e.KeyChar!=8&&!Char.IsDigit(e.KeyChar)&&e.KeyChar!='.') { e.Handled = ...
- Swift中实现用户输入防抖动的两种方法
功能需求 用户通过App搜索服务器中的数据,当用户在搜索框中输入关键字时,要求App将关键字通过网络连接传递到服务器接口,并返回服务器的搜索结果. 这里有个问题:假设用户最终想要输入的关键字为pand ...
- WPF TextBox限制只能输入数字的两种方法
文本框中只能输入数字,一个常见的功能喽,今天就来看看如何实现它~ 下面就看看代码 思路都写在xaml里面了, MainWindow.xaml: <Window x:Class="wpf ...
- Overleaf使用Latex输入中文的两种方法
第一种: 例如文档类为article 则修改文档名为\documentclass{ctexart} report和book对应的为ctexrep和ctexbook 注意涉及到的源文件使用UTF-8编码 ...
- 多行文本框限制输入字符长度(两种方法)
方法一:弹出对话框提示 1.html代码 <HTML> <HEAD> <title>WebForm6</title> ...
- java中n次方怎么表示_n次方_word中输入N次方的符号的两种方法
为了打编程题的题目,而题目里面有X²,但我不懂,只好去网上查了,经过我的多方查找,最后总结了一下几种方法.下面一起和学习啦小编来学习一下输入N次方的符号吧,希望对你有帮助! 输入N次方的符号方法一 1 ...
- android 只输入数字与小数点_Android金额输入框只允许输入小数点后两位效果
一:要实现这个效果也不是很复杂,只需要设置输入框输入的字符类型.设置InputFilter.设置输入变化监听即可.下面直接来看代码吧-. 二:new 一个class extends AppCompat ...
- php数字两位小数_PHP保留两位小数的几种方法
代码如下所示: $num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2); //10.46 //第二种:利用sprintf格式化字符串 ...
最新文章
- php的isset(),PHP isset()具有多个参数
- 你不得不知道的Visual Studio 2012(3)- 创建Windows应用程序
- java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创
- 关于字节序(大端法、小端法)的定义
- django开发中安装包时遇到的 关于 read timed out的问题的解决
- 元宵快乐:看SQL大师们用SQL绘制的团圆
- 【数据结构与算法】主宰这个世界的10大算法
- 124第十四章—权限的配置
- 白岩松谈“房闹“现象
- tableau 地图不显示怎么回事
- joystick手柄驱动安卓_万能手柄驱动(PPJOY) 官方版 (图文)
- 机器学习项目中不可忽视的一个密辛 - 大数定理、中心极限定理
- 数的“平方”速算秘诀,超实用的技巧,3秒出答案
- linux系统怎么打开菜单,Linux如何编辑开始菜单
- 谷歌中设置utf8编码
- 计算机开机检测dhcp,电脑开机显示dhcp是什么意思
- 手机拍证件照的工具哪个好用
- 2017 年度十大最受欢迎的浏览器,你在用哪一款?
- 为何某些文章的阅读量这么高?
- [附源码]Python计算机毕业设计道路桥梁工程知识文库系统Django(程序+LW)