我想限制文本框只接受C#中的数字。我怎么做?将文本框输入限制在C#中的数字#
回答
您是否在WinForms中尝试过MaskedTextBox控件?
看一看像这样
最粗下来,这样做是做这样的事情的肮脏的方式:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar);
}
}
你还是无法与安全这种方法,因为用户仍然可以将非数字字符复制并粘贴到文本框中。无论如何,您仍然需要验证您的数据。
用户也不能删除字符。 – 2010-06-28 13:28:58
@LucasB,除非他们削减。 :) – 2013-02-07 21:14:10
这很好,我推荐的唯一改变是启用Backspace字符: – 2013-05-02 19:36:10
您可以使用AJAX Control Toolkit的FilterTextBox。使用这个你可以允许/禁止任何字符类型。这非常灵活。
从别人在我之前已经说过,我们几乎知道你会在使用这个东西,的WinForms,ASP.NET,Silverlight的...
但现在我需要一个机会,这是WinForm的:)
private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\\d+"))
e.Handled = true;
}
这不允许退格 – 2012-06-26 22:27:41
也不是这里所问的。但如果你需要它..如果(e.KeyChar = vbKeyBack){return;} – sv88erik 2012-08-07 11:51:51
您可以使用Microsoft.VisualBasic.Information.IsNumeric是数字函数。只需添加引用Microsoft.VisualBasic程序
private void textBox1_Validating(object sender,
System.ComponentModel.CancelEventArgs e) {
if (!Microsoft.VisualBasic.Information.IsNumeric(textBox1.Text)) {
e.Cancel = true;
} else {
// Do something here
}
}
这允许用户输入科学计数法是不平凡的筛选。
不知道这是正确的做法,但它为我工作,在TextChanged事件的TextBox运行它:
private void CoordinateValidation(object sender, TextChangedEventArgs e) {
TextBox inputBox = e.OriginalSource as TextBox;
inputBox.TextChanged -= CoordinateValidation;
int caretPos = inputBox.CaretIndex;
foreach (TextChange change in e.Changes) {
if (inputBox.Text.Substring(change.Offset, change.AddedLength).Any(c => !ValidChars.Contains(c)) ||
inputBox.Text.Count(c => c == '.') > 1 ||
(inputBox.Text.Length > 0 && inputBox.Text.Substring(1).Contains('-'))) {
inputBox.Text = inputBox.Text.Remove(change.Offset, change.AddedLength);
caretPos -= change.AddedLength;
}
}
inputBox.CaretIndex = caretPos;
inputBox.TextChanged += CoordinateValidation;
}
这可能不是最好的办法,但对WPF的TextBox工作正常。 ..
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
string originalText = ((TextBox)sender).Text.Trim();
if (originalText.Length>0)
{
int inputOffset = e.Changes.ElementAt(0).Offset;
char inputChar = originalText.ElementAt(inputOffset);
if (!char.IsDigit(inputChar))
{
((TextBox)sender).Text = originalText.Remove(inputOffset, 1);
}
}
}
有一些错误,但简单的方法:d
private void textbox1_TextChanged(object sender, EventArgs e)
{
char[] originalText = textbox1.Text.ToCharArray();
foreach (char c in originalText)
{
if (!(Char.IsNumber(c)))
{
textbox1.Text = textbox1.Text.Remove(textbox1.Text.IndexOf(c));
lblError.Visible = true;
}
else
lblError.Visible = false;
}
textbox1.Select(textbox1.Text.Length, 0);
}
看一看下面的代码
private void txtbox1_KeyPress(object sender, KeyPressEventArgs e)
{
const char Delete = (char)8;
e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != Delete;
}
这将是有益的,但用户可以复制和粘贴文字:-)
- 1. 将文本框/文本框中的输入限制为仅在J2me中使用字母数字输入
- 2. 将HTML输入限制为文本框
- 3. 将VBA userform文本框中的输入限制为仅限数字
- 4. 限制在文本框中允许的字符(输入金额)
- 5. 如何限制在字母数字文本框中输入9位数字
- 6. C#文本框限制输入字符和快捷键
- 7. 如何将文本框输入限制为html中的数字0-10
- 8. 如何限制在MFC中输入文本框中的字符数?
- 9. 限制输入在c中有一个连字符( - )用于文本框#
- 10. 文本框用户输入限制
- 11. 如何限制输入文本在angular2中的数字范围?
- 12. 输入文字的字符数限制
- 13. 限制文本框中的数字和字母 - C#
- 14. 在文本框中限制文字
- 15. JavaScript限制文本输入字符
- 16. 文本输入字符限制
- 17. C#如何将数字输入限制为一个数字
- 18. 如何验证限制用户输入的文本框|字符
- 19. 限制文字文本框
- 20. HTML文本输入限制
- 21. 仅允许输入数字而不是在C#中输入NumericUpDown的文本框
- 22. 如何限制用户在文本框中输入英文字符
- 23. 限制对文本框的输入:仅允许数字和小数点
- 24. HTML文本框限制在十进制输入
- 25. 如何限制在文本框中输入的任何特殊字符
- 26. 文本框字符限制
- 27. 在文本输入中限制输入符号在drupal 6
- 28. NumberPad限制数字输入
- 29. 输入限制字符数
- 30. 限制文本输入字段中的字符集
HTML? Windows窗体? WPF? Silverlight的? – 2009-12-20 08:14:33
如果C#相关,也许可能是一个愚蠢的建议,但评估NumericUpDown控件是否合适。 – TechNyquist 2015-09-07 08:29:41