编辑框输入不合法时保持原有的值的做法

本文介绍了一种在编辑框输入非法数据时恢复输入前值的方法,通过发送EM_UNDO消息实现。提供了示例代码,展示如何在编辑框失去焦点且数值大于100时触发撤销操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:朱金灿

来源:http://blog.youkuaiyun.com/clever101

 

   很多时候当编辑框输入的数据不合法时我们想显示输入前的值。如何实现这个功能呢?

这时需要给编辑框发送EM_UNDO消息。


     具体做法可以参考如下:编一个简单的对话框测试程序,添加两个编辑框,其中一个ID为IDC_EDIT1,然后添加下面代码:

void CTestEditDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
  // m_nNum为对话框的int型数据成员
	DDX_Text(pDX, IDC_EDIT1, m_nNum); 
}
BEGIN_MESSAGE_MAP(CTestEditDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_EN_KILLFOCUS(IDC_EDIT1, &CTestEditDlg::OnEnKillfocusEdit1)
END_MESSAGE_MAP()

// IDC_EDIT1编辑框失去输入检点时响应
void CTestEditDlg::OnEnKillfocusEdit1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	if(m_nNum>100)
	::SendDlgItemMessage(m_hWnd,IDC_EDIT1,EM_UNDO,0,0);
}

参考文献:

1. 编辑控件(edit)【ZT】



C# Web Form 中在SqlServer有个数据库UL_DB,其中有一个总表:ULMaterialParameter,表中的字段为:int Id,varchar PlateType(板类型),varchar Type(Type),varchar CanadianExportCertification(加拿大出口认证),varchar Plates(板材),float PlateThicknessMin(最小板厚(mm)),varchar PP(pp),float PPThicknessMin(PP最薄厚度(mm)),varchar InkPHCertified(塞孔认证),varchar Ink(油墨),varchar Process(流程别),int PressingTimes(压合次数),varchar SurfaceTreatment(表面处理方式),int IMaximumInnerCopperThicknessMic(I-最大内层铜厚mic),varchar PHInk(塞孔油墨),int EMinimumOuterCopperThicknessMic(E-最小外层铜厚mic),varchar DSR(是否符合DSR),int ProductThicknessMin(成品最薄厚度(mm)),float LineWidthMin(最小线宽(mm)),float EdgeWireWidthMin(最小边缘导线宽(mm)),float NoLlineConductorDiameterMax(无线路导体最大直径(mm)),int SolderingTemperature (焊锡温度(℃)),int SolderTemperatureDuration(焊锡温度持续间(S)),int OperatingTemperatureMax(最高操作温度(℃)),varchar CombustionGrade(燃烧等级),int TemperatureMax(最大温度℃),int MaximumCycle(最大周期cycle),某些字段里面的有很多,比如某条数据中的Plates就包含NY6200, NY6200 (C), NY6200 (D), NY-P1 (C), NY-P1 (D), NY-P2 (C), NY-P2 (D),NY-P1, NY-P2, NY6300,NY6300 (C), NY6300 (D),所以还建立了每个字段单独的子表如UL_Plates,现在的需求是:需要一个C#WebForm界面,可以对这些数据进行查询,查询方式是联合查询加模糊查询,输入可以直接输入(需要对输入合法性进行校验)也可以点击输入框旁的按钮弹出一个表格,这个表格绑定了子表们,然后在弹出的这个表格中进行相应子表的选择,表格中的字段过多有翻页的功能,选择完后点击完成,将这些填入相应的输入框中,选择完后,点击查询,将查询到的数据显示到一个表中,这个表中可以进行数据修改以及数据删除,数据修改也可以直接输入也可以点击文本框旁的按钮弹出一个表格(同查询一样),手动输入修改原有数据需要对输入合法性进行校验,修改完后点击保存;界面中还能新增数据,新增数据输入可以直接输入也可以点点击文本框旁的按钮弹出一个表格(同查询一样),选择完后点击保存,页面中所有增删改的操作都会以txt文本的方式记录到本地。请根据这些所有的字段将这个前后端完整的开发出来(代码中包含所有提供的字段)页面美观,特别是在模拟框选择子表数据后一定要能填入文本框中。模拟框中选择后,没有填入相应的文本框
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clever101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值