温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

TextBox只输入数字(包括负号和小数点)

发布时间:2020-06-11 22:05:34 来源:网络 阅读:632 作者:起名好难 栏目:编程语言

 今天拿到一个修改TextBox控件只输入文本的逻辑判断的任务,然后写了写,代码如下,可能存在不足,万分感谢!

  1. /// <summary> 
  2. /// 限制文本框只能相应数字、负号、删除、左右箭头、点的按键 
  3. /// </summary> 
  4. private void txbX_KeyDown(object sender, KeyEventArgs e) 
  5.     string m_str = ((TextBox)sender).Text; 
  6.     if (((e.KeyCode>=Keys.D0&&e.KeyCode <= Keys.D9)||e.KeyCode == Keys.OemMinus||e.KeyCode == Keys.OemPeriod||e.KeyCode == Keys.Back||e.KeyCode == Keys.Delete||e.KeyCode == Keys.Left||e.KeyCode == Keys.Right)&&!e.Shift)
  7.     { 
  8.         switch(e.KeyCode) 
  9.         { 
  10.             case Keys.OemPeriod: 
  11.                 if (m_str.Contains('.')) 
  12.                 { 
  13.                     e.SuppressKeyPress = true
  14.                 } 
  15.                 else 
  16.                 { 
  17.                     if (m_str.Trim().Length == 0) 
  18.                     { 
  19.                         e.SuppressKeyPress = true
  20.                     } 
  21.                 } 
  22.                 break
  23.             case Keys.OemMinus: 
  24.                 if (m_str.Contains('-')) 
  25.                 { 
  26.                     e.SuppressKeyPress = true
  27.                 } 
  28.                 else 
  29.                 { 
  30.                     if (((TextBox)sender).SelectionStart != 0) 
  31.                     { 
  32.                         e.SuppressKeyPress = true
  33.                     } 
  34.                 } 
  35.                 break
  36.             default
  37.                 break
  38.         } 
  39.     } 
  40.     else 
  41.     { 
  42.         e.SuppressKeyPress = true
  43.     } 

有点小收获就是,知道了KeyEventArgs . SuppressKeyPress 属性和KeyEventArgs . Handled 属性的一点小区别。

KeyEventArgs . SuppressKeyPress 属性:如果键事件不应该发送到该控件,则为 true;否则为 false注意:为了阻止用户输入,可在KeyDown事件处理程序中为此属性赋值为true,在将SuppressKeyPress设为True的同时Handled的值也会被设为True;

 

 

 

KeyEventArgs ..::. Handled 属性:true 表示跳过控件的默认处理;false 表示还将该事件传递给默认控件处理程序。 Handled 由 Windows 窗体中的不同控件以不同的方式实现。 对于 TextBox 之类的作为本机 Win32 控件的子类的控件,它被解释为表示键消息不应该传递到基础本机控件。 如果在 TextBox 上将 Handled 设置为 true,则该控件将不会把按键 events 传递到基础 Win32 文本框控件但是它仍将显示用户键入的字符。 

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI