iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C# 中怎么利用TextBox输入数字
  • 679
分享到

C# 中怎么利用TextBox输入数字

2023-06-17 22:06:31 679人浏览 八月长安
摘要

C# 中怎么利用TextBox输入数字,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、重写键盘事件OnKeyPress()键盘输入的字符可以通过重写c# te

C# 中怎么利用TextBox输入数字,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1、重写键盘事件OnKeyPress()

键盘输入的字符可以通过重写c# textbox数字控件的OnKeyPress()事件处理,见如下代码:

protected override void OnKeyPress(KeyPressEventArgs e)  // 屏蔽非数字键  {      base.OnKeyPress(e);
  •     if (this.ReadOnly)  // 只读, 不处理  

  •     {  

  •         return;  

  •     }  

  •             if ((int)e.KeyChar <= 32)  // 特殊键(含空格), 不处理  

  •     {  

  •         return;  

  •     }  

  •         if (!char.IsDigit(e.KeyChar))  // 非数字键, 放弃该输入  

  •     {  

  •         e.Handled = true;  

  •         return;  

  •     }  

2、重写命令键处理方法ProcessCmdKey()

可以在ProcessCmdKey()中捕获快捷键Ctrl+V操作。首先要清除当前的选择文本,然后读取剪切板ClipBoard中的内容,最后通过模拟键盘输入的方式”输入“ClipBoard的内容。需要指出,在ProcessCmdKey()方法中不能使用静态方法 SendKeys.Send(),但可以通过控件的WndProc()方法发送字符消息以达到模拟键盘录入的目的。见如下代码:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)    {      if (keyData == (Keys)Shortcut.CtrlV)  // 快捷键 Ctrl+V 粘贴操作
  •     {  

  •         this.ClearSelection();  

  •         string text = Clipboard.GetText();  

  •         for (int k = 0; k < text.Length; k++) // can not use SendKeys.  

  •         {  

  •             // 通过消息模拟键盘输入, SendKeys.Send()静态方法不行  

  •             SendCharKey(text[k]);  

  •         }  

  •         return true;      

  • }  

  •     return base.ProcessCmdKey(ref msg, keyData);  

private void SendCharKey(char c)  // 通过消息模拟键盘录入  {      Message msg = new Message();
  •     msg.HWnd = this.Handle;  

  •     msg.Msg = WM_CHAR;  // 输入键盘字符消息 0x0102  

  •     msg.WParam = (IntPtr)c;  

  •     msg.LParam = IntPtr.Zero;  

  •     base.WndProc(ref msg);  


3、重写消息处理方法WndProc()

可以在定制c# textbox数字控件中创建无内容的上下文菜单对象,从而屏蔽该菜单,方法是在定制控件的构造函数中增加如下代码:

public class CustomTextBox: TextBox  {      // 创建无内容菜单对象, 等价屏蔽该控件的上下文菜单
  •     this.ContextMenu = new ConTextMenu();  

  •   } 

  • 由于上下文菜单的Paste操作对应windows的WM_PASTE消息,于是可以在控件的WndProc()方法中捕获该消息,然后获得剪切板 ClipBoard中的内容,最后通过SendKeys.Send()方法模拟键盘录入操作。需要注意,这里不能调用前面ProcessCmdKey() 中模拟键盘输入函数SendCharKey()。见如下代码:

    protected override void WndProc(ref Message m)  // 捕获Mouse的Paste消息  {      if (m.Msg == WM_PASTE)  // 选择上下文菜单的"粘贴"操作    {          this.ClearSelection();          SendKeys.Send(Clipboard.GetText());  // 模拟键盘输入      }      else     {          base.WndProc(ref m);      }  }

    4、消除选择ClearSelection()、删除字符DeleteText()

    还必须分析前面代码中的两个函数:
    ClearSelection()用以清除当前的选择文本,即清除this.SelectedText
    DeleteText()则删除当前字符
    需要指出其中的技巧,就是转换Delete键操作为BackSpace操作。此外,函数DeleteText()还需要确定当前的this.SelectionStart值。具体代码如下:

    private void ClearSelection() // 清除当前TextBox的选择  {      if (this.SelectionLength == 0)      {          return;      }      int selLength = this.SelectedText.Length;    this.SelectionStart += this.SelectedText.Length;  // 光标在选择之后      this.SelectionLength = 0;      for (int k = 1; k <= selLength; k++)      {          this.DeleteText(Keys.Back);      }  }
    private void DeleteText(Keys key) // 删除字符并计算SelectionStart值  {      int selStart = this.SelectionStart;      if (key == Keys.Delete)  // 转换Delete操作为BackSpace操作      {          selStart += 1;          if (selStart > base.Text.Length)          {              return;          }      }      if (selStart == 0 || selStart >base.Text.Length)  // 不需要删除      {          return;      }      if (selStart == 1 && base.Text.Length == 1)      {          base.Text = "";          base.SelectionStart = 0;      }      else  // selStart > 0      {          base.Text = base.Text.Substring(0, selStart - 1) +              base.Text.Substring(selStart, base.Text.Length - selStart);          base.SelectionStart = selStart - 1;      }  }

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: C# 中怎么利用TextBox输入数字

本文链接: https://www.lsjlt.com/news/293749.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C# 中怎么利用TextBox输入数字
    C# 中怎么利用TextBox输入数字,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、重写键盘事件OnKeyPress()键盘输入的字符可以通过重写c# te...
    99+
    2023-06-17
  • .nec# 中怎么利用textbox输入数字
    本篇文章为大家展示了.nec# 中怎么利用textbox输入数字,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。当界面上要用户输入只有数字的字符时,默认的c# textbox数字是不能胜任的,网上有很...
    99+
    2023-06-17
  • 怎么在C#中使用TextBox作数据输入方法
    怎么在C#中使用TextBox作数据输入方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。读取TextBox控件中数据并发送private void&...
    99+
    2023-06-15
  • C#使用TextBox作数据输入方法
    笔者最近需要上位机与下位机进行数据交互,在广泛参考大佬的资料后,较为完善地使用Textbox控件进行数据输入的功能。 程序段主要功能:实现输入数据并转换成byte数组再通过串口发送至...
    99+
    2024-04-02
  • c++中怎么输入数字
    c++ 中输入数字的方法有三种:使用 cin:int num; cin >> num;使用 stoi:string str; cin >> str; int nu...
    99+
    2024-05-12
    c++
  • C# 中怎么利用TextBox实现换行
    C# 中怎么利用TextBox实现换行,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C# TextBox换行时你往往会想到直接付给一个含有换行符"\n...
    99+
    2023-06-17
  • c#输入函数怎么输入字符串
    在 c# 中,输入字符串的两种主要方法是:console.readline():获取一行文本输入,适用于一次性输入。string.concat():串联多行文本输入,适用于连续...
    99+
    2024-05-11
    c#
  • c++中怎么输入汉字
    在 c++ 中输入汉字可以通过三种方法:使用 std::wcin 流,专门用于输入多字节字符。使用 cin.imbue() 将流关联到特定 locale,例如 zh_cn.utf-8。使...
    99+
    2024-05-09
    c++
  • c++中怎么输入字母
    如何在 c++ 中输入字母?可以通过三种方法进行输入:使用 cin 和 istream_iterator。使用 getline。使用字符数组。 如何在 C++ 中输入字母 在 C++ ...
    99+
    2024-05-09
    c++
  • C#中怎么利用实现TextBox换行功能
    这篇文章将为大家详细讲解有关C#中怎么利用实现TextBox换行功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。要让一个Windows Form的C# TextBox换行显示多行文本就得把...
    99+
    2023-06-17
  • VBS怎么利用SendKeys输入中文字符
    这篇文章主要介绍“VBS怎么利用SendKeys输入中文字符”,在日常操作中,相信很多人在VBS怎么利用SendKeys输入中文字符问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VBS怎么利用SendKeys...
    99+
    2023-06-08
  • c++中如何输入数字
    在 c++ 中,输入数字需使用 >> 操作符:声明对应类型的变量。使用 cin 流对象打开输入流。在输入流后面使用 >> 输入数字并存储到声明的变量中。 C++...
    99+
    2024-05-10
    c++ 标准库
  • C#怎么限制TextBox控件内输入值的范围
    要限制TextBox控件内输入值的范围,可以使用以下两种方法:1. 使用事件处理程序:在TextBox的KeyPress事件中添加以...
    99+
    2023-08-16
    C# TextBox
  • c++中字符串怎么输入
    c++ 中字符串输入有两种方法:getline 函数,读取整行字符串,包括空格。cin >> 运算符,读取单个单词或以空格分隔的字符串。 C++ 中字符串输入 在 C++ ...
    99+
    2024-05-01
    c++
  • C#中TextBox控件怎么用
    这篇文章主要介绍了C#中TextBox控件怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。大家知道茬某些特殊情况下,我们有时候需要让户在文本框中只能输入数字,那我们怎么实...
    99+
    2023-06-17
  • Asp.net之TextBox只允许输入数字的方法总结
    在ASP.NET中,可以通过以下几种方法来限制TextBox只允许输入数字:1. 使用RegularExpressionValida...
    99+
    2023-08-17
    Asp.net
  • Android中怎么利用EditText限制输入字符
    这篇文章给大家介绍Android中怎么利用EditText限制输入字符,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 第一种方式:  设置EditText的inputType属性,可以通过xml或者...
    99+
    2023-05-30
    android edittext
  • c++中string怎么输入字符串
    在 c++ 中输入字符串,使用 getline 函数,其参数包括指向字符串变量的指针和输入流对象。其步骤如下:包含 头文件。使用 cin 输入流对象。使用 getline(cin, s...
    99+
    2024-05-09
    c++
  • c++中数组怎么输入
    在 c++ 中输入数组有多种方法,其中最常用的包括:使用 std::cin:逐个输入数组元素。使用数组初始化器:直接初始化数组元素。使用 getline 和 istringstream:...
    99+
    2024-05-01
    c++
  • c语言怎么输入一个数字
    使用 scanf 函数(语法:int scanf(const char *format, ...);)可以从标准输入获取数字。步骤:定义整数变量。使用 scanf 函数,格式化字符串指定...
    99+
    2024-05-13
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作