c# 文本框中只能输入数字
时间: 2024-12-06 14:33:16 浏览: 45
在 C# 中,如果你想要限制文本框(TextBox)仅允许用户输入数字,你可以通过设置其 `Validating` 事件和验证规则来实现。以下是一个简单的示例:
```csharp
// 首先,将 TextBox 的 `AcceptsTab` 属性设为 false,阻止 Tab 键跳转到其他控件
textBox.AcceptsTab = false;
// 然后,创建一个自定义验证器类,继承自 ValidationRule
public class NumericValidation : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
string inputText = value as string;
if (!string.IsNullOrEmpty(inputText) && !inputText.All(char.IsDigit))
{
return new ValidationResult(false, "只允许输入数字");
}
return ValidationResult.ValidResult;
}
}
// 在需要的代码段添加验证
textBox.Validating += (sender, e) =>
{
if (!(e.Value is string text && text.All(char.IsDigit)))
{
e.Cancel = true; // 取消默认的验证,因为我们有自己的规则
var validation = new NumericValidation();
e_ERRORS.AddModelError("", validation.Validate(e.Value, null).ErrorContent);
}
};
// 如果希望在用户输入非数字字符时立即提示错误,可以考虑使用 TextChanged 事件
textBox.TextChanged += (sender, e) => textBox.Text = Regex.Replace(textBox.Text, "[^0-9]", "");
阅读全文