网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
.net控制TextBox中只能输入数字
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式

当界面上要用户输入只有数字的字符时,默认的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
{
 /// <summary>
 /// NumTextBox 的摘要说明。
 /// </summary>
 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)
     {
  &nb

  • 上一篇资讯: C#静态类和静态类成员
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号