日期:2014-05-18  浏览次数:21019 次

请问!!!
有个TextBox
现在要求是,这个文本框只能输入0-255的数字和*号,当输入*号的时候,就默认代表了0-255这所有的256个数字,并且出现了一个*号后,*后面就不能再输入*号(仅有一个*号)
其实就是个IP地址问题,文本框只能输入0-255的数字和*号,*号的时候就包括0-255这一段的256个IP

不用正则写

------解决方案--------------------
private void Form1_Load(object sender, EventArgs e)
{
textBox1.MaxLength = 3; // 可以到属性中设置
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (((TextBox)sender).Text == string.Empty) return; // 为空时不处理
int vInteger;
if (!int.TryParse(((TextBox)sender).Text, out vInteger) || vInteger > 255)
// 当不能转换为整数或者数值大于255时设置为0
((TextBox)sender).Text = "0 ";
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '* ') // 输入星号则Text设置为一个星号
{
((TextBox)sender).Text = "* ";
e.Handled = true;

} else e.Handled = ( "0123456789 " + (char)Keys.Back).IndexOf(
char.ToUpper(e.KeyChar)) < 0; // 只能输入数字或退格键
}