C#中只允许输入数字的解决方案
在自定义控件中,如果只允许输入数字,则需要考虑以下三种情况:
通过普通按键输入的字符,包括西班牙语、汉字等。
通过键盘快捷键粘贴文本,即Ctrl+V操作
通过上下
C#中只允许输入数字的解决方案
在自定义控件中,如果只允许输入数字,则需要考虑以下三种情况:
通过普通按键输入的字符,包括西班牙语、汉字等。
通过键盘快捷键粘贴文本,即Ctrl+V操作
通过右键菜单的鼠标操作粘贴文本,即“粘贴”操作
在讨论的类似文章中,大多数只考虑第一种情况,而忽略了第二种和第三种常见操作。 本文讨论的处理方法的核心思想是重写大事()和()、()两个方法,将右键菜单的Ctrl+V和粘贴操作统一为键盘输入操作,从而屏蔽 () 中的非数字键。
1.重写键盘事件()
可以通过重写控件的()函数来处理键盘输入的字符,见以下代码:
void ( e) // 屏蔽非数字键 { (e); if () // 只读,不处理 { ; } 如果 ((int) ) { ; } } if ( == 0 || > ) // 不需要删除 { ; } if ( == 1= 0; } else // > 0 { = (0, - 1) + (, - ); = - 1; }}