只允许文本框 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);
}
}
我想确保我的文本框的输入是特定格式。
+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);
}
}