在textBox中输入数字只能是1-12 且个位数前面补0
private void txtMonth_TextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(txtMonth.Text, @"^\d*$"))
{
txtMonth.Undo();
}
if (Regex.IsMatch(txtMonth.Text.Trim(), @"^([0-9]*|1[0-2])$"))
{
if (txtMonth.Text.Length == 2)
{
txtMonth.Text = txtMonth.Text;
}
else if (txtMonth.Text.Length == 1)
{
txtMonth.Text = 0 + txtMonth.Text;
}
}
else
{
txtMonth.Text = "";
}
}
要求:1、输入只能是数字
2、输入的数字是1到12的
3、假如输入的月份是基数位在前面补零也就是输入1显示0 C#?winform C#
[解决办法]
private void txtMonth_TextChanged(object sender, EventArgs e)
{
Regex reg=new Regex(@"^0?[1-9]
[解决办法]
1[0-2]$");
if (!reg.IsMatch(txtMonth.Text))
{
txtMonth.Undo();
}
if (txtMonth.Text.Length == 1)
{
txtMonth.Text =txtMonth.Text.PadLeft(2,'0');
}
}
[解决办法]
1,2
private void txtMonth_TextChanged(object sender, EventArgs e)
{
if (!Regex.IsMatch(txtMonth.Text.Trim(), @"^([0-9]
[解决办法]
1[0-2])$"))
{
txtMonth.Text = "";
}
}
3、假如输入的月份是基数位在前面补零也就是输入1显示0
在失去焦点的时候
textbox1.Text=textbox1.Text.Trim().PadLeft(2,'0');
[解决办法]
string.PadLeft(3,'0')自动补'0' 比如12就补位012
[解决办法]
在keydown,keypress事件里处理。
[解决办法]
private void txtMonth_Validating(object sender, CancelEventArgs e)
{
txtMonth.Text = txtitemno.Text.Trim().PadLeft(2, '0');
}
private void txtMonth_KeyPress(object sender, KeyPressEventArgs e)
{
if (this.txtMonth.Text.Trim().Length == 0) { return; }
if (Convert.ToInt16(e.KeyChar) == 8)
{
e.Handled = false;
}
else
{
txtMonth.Text = txtMonth.Text + e.KeyChar.ToString();
if (!Regex.IsMatch(txtMonth.Text.Trim(), @"^([0-9]
[解决办法]
1[0-2])$"))
{
txtMonth.Text = txtMonth.Text.Substring(0, this.txtMonth.Text.Trim().Length - 1);
}
txtMonth.SelectionStart = txtMonth.Text.Length;
txtMonth.Focus();
e.Handled = true;
}
}
给你写了个,大致测试了下,是可以满足你的要求,
不知道为什么不用 combox