在C#中如何限至TextBox中只能输入数字或只能输入字母

时间:2022-11-08 11:47:48
在C#中如何限至TextBox中只能输入数字或只能输入字母

13 个解决方案

#1


这个可以用正则表达式!

#2


使用验证控件啊

#3


http://www.microsoft.com/china/msdn/library/langtool/vcsharp/winforms03162004.mspx
这是msdn的链接,有你所要得内容。

#4


用验证控件加真则表达式

#5


自己写一个控件继承自TextBox,然后拦截ProcessKeyEventArgs事件进行处理。参数的Msg属性为0x0102时判断它的Wparam属性,该属性就是输入的字符的ASCII码,做判断后如果是要屏蔽的字符,返回true(注意true才是会让字符不显示出来)

可以参见:
http://www.netyi.net/blog/user1/16/archives/2005/10.shtml

#6


WINFORM就不用说了很简单
WEBFORM推荐用自定义控件,下面我给你段只可输入数字的TEXTBOX控件,梢加修改可满足你的要求

Imports System
Imports System.Web
Imports System.Web.UI.WebControls
Public Class textoNumerico
    Inherits TextBox
    Private Const EVENTO_CONTROL As String = "onKeyPress"
    Private Const SCRIPT_NUMERICO As String = "if (event.keyCode < 45 || event.keyCode > 57) event.returnValue=false;"
    Protected Overrides Sub render(ByVal writer As System.Web.UI.HtmlTextWriter)
        Attributes(EVENTO_CONTROL) = SCRIPT_NUMERICO
        MyBase.Render(writer)
    End Sub
End Class

#7


要是在WinForm中可以使用重写wndProc或者是利用win32API这个网上有许多.要是在WebForm中,就使用正则表达式.

#8


正则表达式呀

#9


http://www.microsoft.com/china/msdn/library/langtool/vcsharp/winforms03162004.mspx

#10


方法基本上楼上的都说得差不多了

#11


现在控件maskedTextBox或RegularExpress

#12


用左边的服务器控件(正则表达式)就可以了

#13


这是我以前做项目时写的一个小东西。你可以看看。
//有效性验证,只要求输入数字
private void txtNewNum_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
  e.Handled = true;
  if((e.KeyChar >= '0'&&e.KeyChar<='9'))
    {
//字符长度小于六个时可以输入
if(txtNewNum.Text.Length-txtNewNum.SelectedText.Length<6)
{
  //如果输入在0-9之间则执行。
  e.Handled = false;
}
      }
}

#1


这个可以用正则表达式!

#2


使用验证控件啊

#3


http://www.microsoft.com/china/msdn/library/langtool/vcsharp/winforms03162004.mspx
这是msdn的链接,有你所要得内容。

#4


用验证控件加真则表达式

#5


自己写一个控件继承自TextBox,然后拦截ProcessKeyEventArgs事件进行处理。参数的Msg属性为0x0102时判断它的Wparam属性,该属性就是输入的字符的ASCII码,做判断后如果是要屏蔽的字符,返回true(注意true才是会让字符不显示出来)

可以参见:
http://www.netyi.net/blog/user1/16/archives/2005/10.shtml

#6


WINFORM就不用说了很简单
WEBFORM推荐用自定义控件,下面我给你段只可输入数字的TEXTBOX控件,梢加修改可满足你的要求

Imports System
Imports System.Web
Imports System.Web.UI.WebControls
Public Class textoNumerico
    Inherits TextBox
    Private Const EVENTO_CONTROL As String = "onKeyPress"
    Private Const SCRIPT_NUMERICO As String = "if (event.keyCode < 45 || event.keyCode > 57) event.returnValue=false;"
    Protected Overrides Sub render(ByVal writer As System.Web.UI.HtmlTextWriter)
        Attributes(EVENTO_CONTROL) = SCRIPT_NUMERICO
        MyBase.Render(writer)
    End Sub
End Class

#7


要是在WinForm中可以使用重写wndProc或者是利用win32API这个网上有许多.要是在WebForm中,就使用正则表达式.

#8


正则表达式呀

#9


http://www.microsoft.com/china/msdn/library/langtool/vcsharp/winforms03162004.mspx

#10


方法基本上楼上的都说得差不多了

#11


现在控件maskedTextBox或RegularExpress

#12


用左边的服务器控件(正则表达式)就可以了

#13


这是我以前做项目时写的一个小东西。你可以看看。
//有效性验证,只要求输入数字
private void txtNewNum_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
  e.Handled = true;
  if((e.KeyChar >= '0'&&e.KeyChar<='9'))
    {
//字符长度小于六个时可以输入
if(txtNewNum.Text.Length-txtNewNum.SelectedText.Length<6)
{
  //如果输入在0-9之间则执行。
  e.Handled = false;
}
      }
}