当前位置: 首页 > 编程语言 > C#

KeyDown事件——如何轻松知道按下的键是否是数字?Share

时间:2023-04-10 12:31:58 C#

KeyDown事件-如何轻松知道按下的键是否为数字?我目前正在处理DataGridView控件的KeyDown事件。其中一列由计算值填充,我希望用户能够在需要时覆盖单元格值。当用户按下数字键时,单元格进入EditMode并允许用户覆盖该值。如果键不是数字,则什么也不会发生……这很好用……问题是我觉得编码很难看……我似乎找不到一种巧妙的方法来一次处理所有数字键条件,所以我制作了一个switchcase结构来处理所有可能的数字键,如下所示:caseKeys.D5:caseKeys.D6:caseKeys.D7:caseKeys.D8:caseKeys.D9:caseKeys.Decimal:caseKeys.NumPad0:caseKeys.NumPad1:caseKeys.NumPad2:caseKeys.NumPad3:caseKeys.NumPad4:caseKeys.NumPad5:caseKeys.NumPad6:caseKeys.NumPad7:caseKeys.NumPad8:caseKeys.NumPad9:[使单元格进入编辑模式的代码,等等...]当然可以,但是一定有更好更短的方法,对吧?我在谷歌上发现的只是将e.KeyCode转换为char,但是当使用数字键时,它甚至会给出数字值的字母......谢谢。如果您使用KeyPress事件,则事件签名具有KeyPressEventArgs,其中包含一个KeyChar成员,它为您提供数字小键盘的字符。您可以对其执行TryParse以确定它是否为数字。privatevoidForm1_KeyPress(objectsender,KeyPressEventArgse){inti;if(int.TryParse(e.KeyChar.ToString(),outi)){MessageBox.Show("Number");}}尝试if((e.KeyCode>=Keys.D0&&e.KeyCode=Keys.NumPad0&&e.KeyCode为什么在可以使用键码时使用它:voidControl_KeyPress(objectsender,KeyPressEventArgse){if(Char.IsDigit(e.KeyChar)){//dosomething}else{//dosomethingelse}}它更干净,即使微软决定更改所有枚举(例如退格键)它仍然可以工作,它会中断。解决这个问题,你可以使用下面的代码片段:或控制键//处理事件,以便按键被接受keypressisnotaccepted}如果你使用的是WPF,你可能会发现TextBox没有KeyPressed事件,为了解决这个问题,我使用了下面的代码。voidValidateKeyPress(objectsender,KeyEventArgse){charkeyPressed=WPFUtils.Interop.Keyboard.GetCharFromKey(e.Key);if(!Char.IsNumber(keyPressed)&&!Char.IsControl(keyPressed)){//同上e.Handled=true;返回;您可能会注意到一个奇怪的函数调用WPFUtils.Interop.Keyboard.GetCharFromKey(e.Key)这是我收集的有用函数之一。你可以在这里找到它。如果按下一个数字,只需从Key键中获取最后一个字符。此方法适用于不需要任何其他条件的KeyDown事件。只需调用此静态方法并传入Key即可检查publicstaticboolIsNumber(Keyskey){stringnum=key.ToString().Substring(key.ToString().Length-1);Int64i64;如果(Int64.TryParse(num,outi64)){返回真;}返回假;在msdn帮助页面上,他们在示例中使用了以下代码://确定击键是否是键盘顶部的数字。if(e.KeyCodeKeys.D9)…//确定击键是否是来自键盘的数字。if(e.KeyCodeKeys.NumPad9)更精简版:以上是C#学习教程:KeyDown事件——如何轻松知道按键被按下按键是数字吗?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注---privatevoidKeyPress(objectsender,KeyPressEventArgse){e.Handled=!Char.IsDigit(e.KeyChar);//只允许用户输入数字}voiddataGridView1_KeyDown(objectsender,System.Windows.Forms.KeyEventArgse){//使用它来查找它们的键值。//label1.Text+=e.KeyValue;//检查键是否为数值。如果((e.KeyValue>=48&&e.KeyValue=97&&e.KeyValue本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: