限制文本框中的字符

在文本框中,它应该允许用户只输入六个小数位。 例如,1.012345或1,012345。

如果尝试七位小数,则不应允许输入。

请参考以下代码。

private void textBox1_KeyDown_1(object sender, KeyEventArgs e) { bool numericKeys = ( ( ((e.KeyCode >= Keys.D0 && e.KeyCode = Keys.NumPad0 && e.KeyCode  2) { handleText = false; } else { if (args.Length == 2 && args[1] != null && args[1].Length > 5) { handleText = false; } } if (!handleText) { e.SuppressKeyPress = true; e.Handled = true; } } } } if (!(numericKeys || editKeys || navigationKeys)) { e.SuppressKeyPress = true; e.Handled = true; } } 

为了实现文化中立性,文本值首先转换为double ,然后将double值转换为string

 bool value = double.TryParse(aTextValue, NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat, out maxIntensity); if (value) { string aText = maxIntensity.ToString(); } 

拆分字符串以分隔实部和尾数部分(两者都存储为字符串),然后检查尾数部分的长度。 如果字符串的长度超过5,我想压制密钥。

还有另一种方法吗?

我运气好的代码类似于以下内容:

 public class RegexMaskedTextBox : TextBox { private Regex _regex = new Regex(string.Empty); public string RegexPattern { get { return _regex.ToString(); } set { _regex = new Regex(value); } } protected override void OnKeyPress(KeyPressEventArgs e) { string sNewText = this.Text; string sTextToInsert = e.KeyChar.ToString(); if (this.SelectionLength > 0) { sNewText = this.Text.Remove(this.SelectionStart, this.SelectionLength); } sNewText = sNewText.Insert(this.SelectionStart, sTextToInsert); if (sNewText.Length > this.MaxLength) { sNewText = sNewText.Substring(0, this.MaxLength); } e.Handled = !_regex.IsMatch(sNewText); base.OnKeyPress(e); } } 

我想我会通过使用正则表达式解决这个问题。 在按键事件中,您可以检查正则表达式。

也许你想看看这个: 十进制数的正则表达式