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 中)
语法
C# |
---|
public static string StrConv ( |
参数
-
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;
}