.nec# 中怎么利用textbox输入数字

发布时间:2021-07-07 17:47:20 作者:Leah
来源:亿速云 阅读:361

本篇文章为大家展示了.nec# 中怎么利用textbox输入数字,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

当界面上要用户输入只有数字的字符时,默认的c# textbox数字是不能胜任的,网上有很多网友们提供了很多的做法,我总结了一下写了一个在C#下的实现,做到了如下的几点:

1:只能输入类似这样的字符:-123456.789;1234.789;

2:在输入的字符串中不能存在两个点符:12456.78//正确;12.456.78//不正确;

3:如果表示负数可以在字符串的最前面加一个减号“-”,也只能加到弟一个字符的位置;

4:可以用复制粘帖功能和菜单功能,但是只对能正确格式的字符串有效,比如:12.34可以,Abc不可以;

5:只是得到一个字符串,还可以在这个基础上再改进自己所需的,经如添加对十六进制的支持等。

代码如下在.NET下用C#写的:

using System;  using System.Windows.Forms;   namespace NumTextBox  {   ///   /// NumTextBox 的摘要说明。   ///   public class TextBoxNumEx:System.Windows.Forms.TextBox   {    public const int WM_CONTEXTMENU = 0x007b;//右键菜单消息     public const int WM_CHAR = 0x0102;       //输入字符消息(键盘输入的,输入法输入的好像不是这个消息)    public const int WM_CUT = 0x0300;        //程序发送此消息给一个编辑框或combobox来删除当前选择的文本    public const int WM_COPY = 0x0301;       //程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板    public const int WM_PASTE = 0x0302;      //程序发送此消息给editcontrol或combobox从剪贴板中得到数据    public const int WM_CLEAR = 0x0303;      //程序发送此消息给editcontrol或combobox清除当前选择的内容;    public const int WM_UNDO = 0x0304;        //程序发送此消息给editcontrol或combobox撤消***一次操作     public TextBoxNumEx()    {     //     // TODO: 在此处添加构造函数逻辑     //    }    protected override void WndProc(ref Message m)     {      switch(m.Msg)     {       case WM_CHAR:       System.Console.WriteLine(m.WParam);       bool isSign = ((int)m.WParam == 45);       bool isNum = ((int)m.WParam >= 48) && ((int)m.WParam <= 57);       bool isBack = (int)m.WParam == (int)Keys.Back;       bool isDelete = (int)m.WParam == (int)Keys.Delete;//实际上这是一个"."键       bool isCtr = ((int)m.WParam == 24) || ((int)m.WParam == 22) || ((int)m.WParam == 26) ||((int)m.WParam == 3);        if( isNum || isBack || isCtr)       {        base.WndProc (ref m);       }       if (isSign)       {        if (this.SelectionStart!=0)        {         break;        }        base.WndProc (ref m);        break;       }       if (isDelete)       {        if (this.Text.IndexOf(".")<0)        {         base.WndProc (ref m);        }       }       if ((int)m.WParam == 1)       {        this.SelectAll();       }       break;      case WM_PASTE:       IDataObject iData = Clipboard.GetDataObject();//取剪贴板对象              if(iData.GetDataPresent(DataFormats.Text)) //判断是否是Text       {        string str = (string)iData.GetData(DataFormats.Text);//取数据        if (MatchNumber(str))         {         base.WndProc (ref m);         break;        }       }       m.Result = (IntPtr)0;//不可以粘贴       break;      default:       base.WndProc (ref m);       break;     }    }    private bool MatchNumber(string ClipboardText)    {     int index=0;     string strNum = "-0.123456789";     index = ClipboardText.IndexOf(strNum[0]);     if (index>=0)     {      if (index>0)      {       return false;      }      index = this.SelectionStart;      if (index>0)      {       return false;      }     }      index = ClipboardText.IndexOf(strNum[2]);     if (index!=-1)     {      index = this.Text.IndexOf(strNum[2]);      if (index!=-1)      {       return false;      }     }      for(int i=0; i<ClipboardText.Length; i++)     {      index = strNum.IndexOf(ClipboardText[i]);      if (index <0)      {       return false;      }     }     return true;    }   }  }

上述内容就是.nec# 中怎么利用textbox输入数字,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. textbox控件属性是什么
  2. 云服务器与云虚拟主机的区别是什么

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

textbox

上一篇:C# 中怎么对CheckBox选项进行遍历

下一篇:C# 中怎么利用ListBox获取多选项的值

相关阅读

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

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