只允许文本框 C# WinForms 中的特定值格式

Only allow a specific Value Format in a Textbox C# WinForms

我想确保我的文本框的输入是特定格式。

+101.800
-085.000
+655.873

正确的长度以及 +/- 符号对于过程中的通信很重要。

我考虑过使用 MaskedTextbox,但如果我正确理解文档,那不会强制用户添加 +/- 符号。

试试这个正则表达式:

private void InputTextbox_Leave(object sender, EventArgs e)
{
    Regex r = new Regex(@"^[+-]?[0-9]{3}\.[0-9]{3}$");
    Match m = r.Match(InputTextbox.Text);
    if (m.Success)
    {
        // Code
    }
}

您可以在离开文本框后在 Leave 事件中写入检查值,如果该值错误,则将文本颜色设置为红色以引起用户注意,并禁用提交按钮以防止在以正确格式写入数字之前按下按钮。

private void myInput_Leave(object sender, EventArgs e)
{
    Regex r = new Regex(@"^[+-]?[0-9]{3}\.[0-9]{3}$");
    Match m = r.Match(InputTextbox.Text);
    if (!m.Success)
    {
         myInput.ForeColor =  Color.Red;  // Text color will go red
         submitBtn.Enabled = false;  // Submit button is disabled now
    }
    else
    {
         myInput.ForeColor =  Color.Black;
         submitBtn.Enabled = true; // Submit button is enabled now
    }
}

我使用了@Max Voisard 的正则表达式,但它给了我一个未知转义序列的错误,所以我添加了@Symbol,这使它对我有用。

private void textBox18_Validating(object sender, CancelEventArgs e)
        {
            Regex r = new Regex(@"^[+-]?[0-9]{3}\.[0-9]{3}$");

            Match m = r.Match(((TextBox)sender).Text);
            if (!m.Success)

            {
                // Cancel the event and select the text to be corrected by the user.
                e.Cancel = true;
                ((TextBox)sender).Select(0, ((TextBox)sender).Text.Length);



            }
        }