请教高手,如何使文本框中只能输入半角的数字,包括小数,输入全角则自动转换成半角,输入其它则弹出提示框警告。谢谢帮忙啊!
解决方案 »
- IC卡刷卡机主机程序开发
- 【求助帖】WINCE环境下datagrid控件使用TableStyles设置列宽无效!
- 添加BindingNavigator运行程序后,为啥它始终为灰色,我已经设置了datasourse了啊
- Foreach
- c# 怎样同时读取Excel中的两个sheet?
- 急救!很郁闷的一个问题。烦了我好半个月了!~!
- treeview 与 sql server 2000
- ContentType="text/html" ResponseEncoding="gb2312"为什么影响程序的结果呢?
- 把textbox(t1)中输入的空格保存到数据库之后,在另一个页面用textbook控件可以提取到t1中的空格,但是用Label提取不到t1中的空格
- C#父类中虚拟一个方法,可以在父类中调用,而这个方法放在子类中实现
- WPF中BackgroundWorker组件调用ActiveX组件中的耗时的方法,却无法实现异步调用!
- 把多个的附件按照顺序依次挂接到有限的数据记录中
using System;
using System.Collections.Generic;
using System.Text;namespace NoteHandleBLL
{
public class ConvertDBCAndSBC
{ /// <summary>半角转成全角
/// 半角空格32,全角空格12288
/// 其他字符半角33~126,其他字符全角65281~65374,相差65248
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public string DBCToSBC(string input)
{
char[] cc = input.ToCharArray();
for (int i = 0; i < cc.Length; i++)
{
if (cc[i] == 32)
{
// 表示空格
cc[i] = (char)12288;
continue;
}
if (cc[i] < 127 && cc[i] > 32)
{
cc[i] = (char)(cc[i] + 65248);
}
}
return new string(cc);
} /// <summary>全角转半角
/// 半角空格32,全角空格12288
/// 其他字符半角33~126,其他字符全角65281~65374,相差65248
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public string SBCToDBC(string input)
{
char[] cc = input.ToCharArray();
for (int i = 0; i < cc.Length; i++)
{
if (cc[i] == 12288)
{
// 表示空格
cc[i] = (char)32;
continue;
}
if (cc[i] > 65280 && cc[i] < 65375)
{
cc[i] = (char)(cc[i] - 65248);
} }
return new string(cc);
}
}
}
public string NarrowToSmall(string inputString)
{
char[] c = inputString.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] == 255)
{
b[0] = (byte)(b[0] + 32);
b[1] = 0;
c[i] = System.Text.Encoding.Unicode.GetChars(b)[0];
}
}
}
for(int i=0;i<c.Length;i++)
{
if(47<c[i]<58||c[i]==46)
else
{
MessageBox.Show("有非数字");
return null;
}
}
string returnString = new string(c);
return returnString; // 返回半角字符
}
或者正则判断的时候 不要用 \d 用 [0-9]就只匹配半角的数字了
{
if (e.KeyChar != (char)Keys.Back && !char.IsDigit(e.KeyChar) || Regex.IsMatch(e.KeyChar.ToString(), "[.]"))
{
e.Handled = true;
}
//byte[] array = System.Text.Encoding.Default.GetBytes(e.KeyChar.ToString());
//if (!char.IsDigit(e.KeyChar) || array.LongLength == 2) e.Handled = true;
//if (e.KeyChar == '\b' || e.KeyChar == '.') e.Handled = false; }
{
byte[] array = System.Text.Encoding.Default.GetBytes(e.KeyChar.ToString());
if (!char.IsDigit(e.KeyChar) || array.LongLength == 2) e.Handled = true;
if (e.KeyChar == '\b' || e.KeyChar == '.') e.Handled = false;
}
{
if(47<c[i]<58||c[i]==46)
else
{
MessageBox.Show("有非数字");
return null;
}
}
{
if (e.KeyChar != (char)Keys.Back && !char.IsDigit(e.KeyChar) || Regex.IsMatch(e.KeyChar.ToString(), "[.]"))
{
e.Handled = true;
}
//byte[] array = System.Text.Encoding.Default.GetBytes(e.KeyChar.ToString());
//if (!char.IsDigit(e.KeyChar) || array.LongLength == 2) e.Handled = true;
//if (e.KeyChar == '\b' || e.KeyChar == '.') e.Handled = false; }
这个可以,输入时候限制的
把下面的代码拷进去
if (e.KeyChar != (char)Keys.Back && !char.IsDigit(e.KeyChar) || Regex.IsMatch(e.KeyChar.ToString(), "[.]"))
{
e.Handled = true;
}