限制文本框中的字符
在文本框中,它应该允许用户只输入六个小数位。 例如,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); } }
我想我会通过使用正则表达式解决这个问题。 在按键事件中,您可以检查正则表达式。
也许你想看看这个: 十进制数的正则表达式