C#winform怎么写才能实现如下messagebox的提示呢?

我在textbox里面输入一串数字,然后获取数字去调用其他的
数字的格式为111-222-333,中间有两个-
要怎么写代码用try catch或者if然后能实现,如果格式不正确,messageboxshow呢!
感谢!

string pattern = @"\d{3}-\d{3}-\d{3}";
Regex regex = new Regex(pattern);
if (!regex.IsMatch(this.textBox1.Text.Trim()))
   MessageBox.Show("格式错误!");

那你为什么要用textbox,有masktextbox可用啊,直接设置好格式,别人就只能按照格式填写了,想乱填填不进去

可以使用MaskedTextBox,设置Mask属性的验证格式,比如你问题的验证格式为000-000-000,示例如下:

img

运行结果:

img

这样,可以不用try...catch或者if来手动验证用户输入的数据是否合法。

更多Mask属性的验证格式,请参考微软官方文档:

方案二

如果是变长的字符串,可以使用正则表达式加监听文本框的Leave或者TextChanged事件,示例如下:

private void txtPhone_TextChanged(object sender, EventArgs e)
{
    if (!(new Regex(@"^\d{1,3}-\d{1,3}-\d{1,3}$")).IsMatch(txtPhone.Text))
    {
        txtPhone.ForeColor = Color.Red;
    }
    else
    {
        txtPhone.ForeColor = Color.Black;
    }
}

private void txtPhone_Leave(object sender, EventArgs e)
{
    if (!(new Regex(@"^\d{1,3}-\d{1,3}-\d{1,3}$")).IsMatch(txtPhone.Text))
    {
        MessageBox.Show("输入格式不正确");
    }
}

运行效果:

img