在mobile开发中,用户的输入是有一定困难的,所以,提供数字小键盘,可以极大方便用户的输入
我开发了一个简单的小键盘应用,界面很简单,如图:
我选择的是把它做为一个用户控件,应用单键模式,使整个页面或整个程序中只有一个这样的小键盘实例存在,并提供与它关联的输入控件TextBox公共属性,及实现清空,关闭等按钮动作,当然,可以加输入的验证部分,这里我没有用到,把它注释掉了,相关代码如下,我把该用户控件的所有代码都复制过来了.
view plaincopy to clipboardprint?
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
}