【前言】
机房重构终于做完了,整个拖了一个自考+软考,下面总结一下机房重构优化的限制输入问题。
【内容】
1.只能输入数字、退格
///<summary>
///只能输入数字、退格
///</summary>
///<param name="text"></param>
public void Input(KeyPressEventArgs text)
{
if (!(char.IsNumber(text.KeyChar)) && text.KeyChar != (char)8)
{
//阻止从键盘输入键
text.Handled = true;
MessageBox.Show("请输入数字","温馨提示");
return;
}
}
2.只能输入汉字、tap/回车、退格
using System.Text.RegularExpressions;
///<summary>
///只能输入汉字、tap/回车、删除
///</summary>
///<param name="text"></param>
public void InputCharacter(KeyPressEventArgs e)
{
//使用正则表达式限制输入汉字
Regex rg = new Regex("^[\u4e00-\u9fa5]$"); //正则表达式
if (!rg.IsMatch(e.KeyChar.ToString()) && e.KeyChar != '\b') //'\b'是退格键
{
e.Handled = true;
MessageBox.Show("请输入汉字", "温馨提示");
return;
}
}
3.只能输入数字和汉字
using System.Text.RegularExpressions;
/// <summary>
/// 只能输入汉字和数字
/// </summary>
/// <param name="e"></param>
public void Inputtwo(KeyPressEventArgs e)
{
Regex rg = new Regex("^[\u4e00-\u9fa5]$"); //正则表达式
if (!rg.IsMatch(e.KeyChar.ToString()) && e.KeyChar != '\b' && !
(char.IsNumber(text.KeyChar)) && text.KeyChar != (char)8) //'\b'是退格键
{
e.Handled = true;
MessageBox.Show("只能输入汉字和数字", "温馨提示");
return;
}
}
4.只能输入字母和数字
///<summary>
///只能输入字母和数字
///</summary>
///<param name="text"></param>
public void Inputcn(KeyPressEventArgs e)
{
if ((e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar >= 'A' && e.KeyChar <= 'Z')
|| (e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar == 8))
{
e.Handled = false;
}
else
{
e.Handled = true;
MessageBox.Show("密码只能是字母或者数字","温馨提示");
}
}
5.客户端进行调用
private void txtUserID_KeyPress(object sender, KeyPressEventArgs e)
{
//实例化
UI.LimitInput limit = new UI.LimitInput();
//传值
limit.Text = e;
//调用方法判断是否满足条件-只能输入数字
limit.Input(e);
}
【总结】
这样做的好处是提高了代码的复用,但是用户体验效果不是很好,提示框有点多。关于既能提高代码复用率,又能用户体验效果好,大家有什么好的解决办法吗?欢迎评论!