C# TextBox数字的输入

本文探讨了在C#中如何实现TextBox控件只允许输入数字的处理方法,包括事前处理模式,即在键盘输入时屏蔽非数字键。通过重写OnKeyPress()、ProcessCmdKey()和WndProc()事件,处理键盘输入、快捷键Ctrl+V粘贴和上下文菜单的粘贴操作,确保输入的合法性。此外,还提供了ClearSelection()和DeleteText()辅助函数的实现细节。
摘要由CSDN通过智能技术生成

 C#旨在设计成为一种「简单、现代、通用」,以及面向对象的程序设计语言。其中c# textbox数字输入需要注意的一些情况容易被忽略,针对这一情况,笔者将在这篇文章中分享自己的一些经验。

    最近看到一些关于c# textbox数字中限制只允许输入数字的博文,这类问题常常用事后处理模式:录入字符结束后在控件离开(如Exit事件)或确认时进行判断。本文探讨控件录入操作的事前处理模式:做录入操作时屏蔽非数字字符。下面,结合笔者前段时间修改完善的开源数值文框TNumEditBox控件,介绍一个基于定制c# textbox数字控件的解决方法。

    在定制的c# textbox数字控件中,如果只允许输入数字,需要考虑如下三种情况:

    正常按键输入的字符,包括西文、中文字符等

    通过键盘快捷键方式贴入的文本,即Ctrl+V操作

    通过上下文关联菜单的Mouse操作贴入的文本,即”粘贴“操作 
在探讨的同类文章中,多数只考虑了第1种情况,忽略得了第2、3种常见的操作。本文探讨的处理方法核心思路是重写事件OnKeyPress()和两个方法 ProcessCmdKey()与WndProc(),并把Ctrl+V、关联菜单的Paste操作统一到键盘录入操作中,从而在 OnKeyPress()屏蔽掉非数字键。

    1、重写键盘事件OnKeyPress()

    键盘输入的字符可以通过重写c# textbox数字控件的OnKeyPress()事件处理,见如下代码:

  1. protected override void OnKeyPress(KeyPressEventArgs e)  // 屏蔽非数字键
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值