现在的位置: 首页 > 综合 > 正文

文本框限制输入(半角,全角互转),以及控制输入法问题,解决方法整合

2013年10月09日 ⁄ 综合 ⁄ 共 3095字 ⁄ 字号 评论关闭


1. 
TextBox限制只允许输入半角数字

 

    
Private
Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles telList.KeyPress


         If (Not System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "[0-9]") And e.KeyChar <> " ") Then

             e.Handled = True

             Return

         End If

     End Sub

 

------------------------------------------------------------------------------------------------------------------------

2.如何控制在DataGrid中不能输入全角数字,符号,字母?    

  ===============================================  
  1.屏蔽全角  
  2.把全角转为半角  
   
  private   string   ToDBS(string   str)//全角转半角  
  {  
    return   Regex.Replace(str,"[//w]",new   MatchEvaluator(RegReplace));  
  }  
  private     string   RegReplace(Match   m)  
  {  
        if((int)m.Value[0]>=65281&(int)m.Value[0]<=65374)return   ((char)((int)m.Value[0]-65248)).ToString();  
        if((int)m.Value[0]==12288)return   ((char)32).ToString();;  
  return   m.Value;  
  }

-------------------------------------------------------------------------------------------------------------------------------

3.有很多方法,不过不建议你去限制输入(验证控件,正则,字符处理),这样会降低录入效率

你可以在处理数据前将数据都转成半角
可以参考vb下 StrConv方法
VB.NET直接调StrConv函数就行了,C#版的则需要在项目中添加引用Microsoft.VisualBasic.dll, 然后就可以在C#程序中直接使用VB.NET的StrConv函数了。

回已转换为指定形式的字符串。

命名空间:
Microsoft.VisualBasic
程序集:
Microsoft.VisualBasic(在 microsoft.visualbasic.dll 中)

语法

Visual Basic(声明)
Public
 Shared
 Function
 StrConv

 ( _
	str
 As
 String, _
	Conversion
 As
 VbStrConv
, _
	<OptionalAttribute> Optional
 LocaleID
 As
 Integer = 0 _
) As
 String


Visual Basic(用法)
Dim
 str
 As
 String
Dim
 Conversion
 As
 VbStrConv

Dim
 LocaleID
 As
 Integer
Dim
 returnValue
 As
 String

returnValue
 = Strings
.StrConv

(str
, Conversion
, LocaleID
)


C#
public
 static
 string StrConv

 (
string str ,
VbStrConv Conversion ,
[OptionalAttribute] int LocaleID
)


C++
public
:
static
 String^ StrConv

 (
	String^ str
, 
	VbStrConv
 Conversion
, 
	[OptionalAttribute] int LocaleID

)


J#
public
 static
 String StrConv

 (
	String str
, 
	VbStrConv
 Conversion
, 
	/** @attribute OptionalAttribute() */ int LocaleID

)


JScript
public
 static
 function
 StrConv

 (
	str
 : String, 
	Conversion
 : VbStrConv
, 
	LocaleID
 : int
) : String

 

参数

str

必选。要转换的 String
表达式。

Conversion

必选。VbStrConv 枚举 成员。指定要执行的转换类型的枚举值。

LocaleID

可选。LocaleID
值(如果与系统 LocaleID
值不同)。(系统 LocaleID
值为默认值。)

返回值

返回已转换为指定形式的字符串。

Conversion
参数的设置为:

枚举成员

说明

VbStrConv.None

不执行任何转换

VbStrConv.LinguisticCasing

使用语言规则进行大小写,而不使用文件系统(默认)。仅当与 VbStrConv.UpperCase
VbStrConv.LowerCase
一起使用时才有效。

VbStrConv.UpperCase

将字符串转换为大写字符。

VbStrConv.LowerCase

将字符串转换为小写字符。

VbStrConv.ProperCase

将字符串中每个单词的第一个字母转换为大写。

VbStrConv.Wide
*

将字符串中的窄(半角)字符转换为宽(全角)字符。

VbStrConv.Narrow
*

将字符串中的宽(全角)字符转换为窄(半角)字符。

VbStrConv.Katakana
**

将字符串中的平假名字符转换为片假名字符。

VbStrConv.Hiragana
**

将字符串中的片假名字符转换为平假名字符。

VbStrConv.SimplifiedChinese
*

将繁体中文字符转换为简体中文字符。

VbStrConv.TraditionalChinese
*

将简体中文字符转换为繁体中文字符。

*

   适用于亚洲区域设置。

**

   仅适用于日本。

---------------------------------------------------------------------------------------------------------------------------

4.public   string     ChangeStr(   string   str)  
  {  
  //把字母,数字由半角转化为全角  
  char[]   c=str.ToCharArray();  
  for   (int   i=0;i<c.Length;i++)  
  {  
  byte[]   b=System.Text.Encoding.Unicode.GetBytes(c,i,1);  
  if   (b.Length==2)  
  {  
  if   (b[1]==0)  
  {  
  b[0]=(byte)(b[0]-32);  
  b[1]=255;  
  c[i]=System.Text.Encoding.Unicode.GetChars(b)[0];  
  }  
  }  
  }  
  //半角  
  string   strNew=new   string(c);  
  return   strNew;  
  }

抱歉!评论已关闭.