在mobile开发中,用户的输入是有一定困难的,所以,提供数字小键盘,可以极大方便用户的输入
我开发了一个简单的小键盘应用,界面很简单,如图:
我选择的是把它做为一个用户控件,应用单键模式,使整个页面或整个程序中只有一个这样的小键盘实例存在,并提供与它关联的输入控件TextBox公共属性,及实现清空,关闭等按钮动作,当然,可以加输入的验证部分,这里我没有用到,把它注释掉了,相关代码如下,我把该用户控件的所有代码都复制过来了.
public partial class UCNumeralKeyboard : UserControl
{
#region 变量
//唯一的实例,私有变量
private static UCNumeralKeyboard numeralKeyboard = null;
//要在其中输入值的TextBox控件
private static TextBox textBox = null;
#endregion
#region 构造函数
private UCNumeralKeyboard()
{
InitializeComponent();
}
#endregion
#region 获得唯一实例的方法
public static UCNumeralKeyboard GetNumeralKeyBoard()
{
if (numeralKeyboard == null)
{
numeralKeyboard = new UCNumeralKeyboard();
}
return numeralKeyboard;
}
#endregion
#region 设置输入控件(属性)
public TextBox TB
{
set
{
textBox = value;
}
}
#endregion
#region 点击各按钮时的动作
private void btn1_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
if (btn != null && textBox != null)
{
#region comment
//switch (btn.Text)
//{
// case "1":
// case "2":
// case "3":
// case "4":
// case "5":
// case "6":
// case "7":
// case "8":
// case "9":
// case "0":
// int indexMinus = textBox.Text.IndexOf("-");
// int indexBegin = 0;
// int indexDot = textBox.Text.IndexOf(".");
// if (indexDot < 0)
// {
// if (textBox.Text.Length == 0 || textBox.Text.Substring(indexBegin, 1) != "0" || indexDot > 0)
// {
// textBox.Text += btn.Text;
// }
// }
// else
// {
// indexBegin = 1;
// if (textBox.Text.Length == 1 || textBox.Text.Substring(indexBegin, 1) != "0" || indexDot > 0)
// {
// textBox.Text += btn.Text;
// }
// }
// break;
// case "-":
// if (textBox.Text.IndexOf("-") < 0)
// {
// textBox.Text = "-" + textBox.Text;
// }
// else
// {
// textBox.Text = textBox.Text.Substring(1);
// }
// break;
// case ".":
// if (textBox.Text.IndexOf(".") < 0)
// {
// if ((textBox.Text.IndexOf("-") >= 0 && textBox.Text.Length > 1)
// || (textBox.Text.IndexOf("-") < 0 && textBox.Text.Length > 0)
// )
// {
// textBox.Text += btn.Text;
// }
// }
// break;
//}
#endregion
if (textBox.Text.Trim().Length < textBox.MaxLength)
{
textBox.Text += btn.Text;
}
}
}
#endregion
#region 关闭按钮动作
private void btnClose_Click(object sender, EventArgs e)
{
this.Parent.Controls.Remove(this);
}
#endregion
#region 清空关联的TextBox控件
private void btnClear_Click(object sender, EventArgs e)
{
textBox.Text = "";
}
#endregion
}