如何允许所有数字键

时间:2011-11-02 14:27:38

标签: c# wpf .net-4.0

  

可能重复:
  How do I get a TextBox to only accept numeric input in WPF?

我有一个文本框,我只想接受数字键以及删除和退格。

我可以轻松地允许删除和退格,但是有没有办法允许所有数字键作为一个组(类似于Key.Numeric)而不是默认执行它们?我使用wpf使其windows.input.key而不是forms.key。

2 个答案:

答案 0 :(得分:1)

如果您要搜索WPF的屏蔽文本框,可以尝试使用this库。 Here您可以找到一个实施示例。

Ps我发现了一些这样一个textBox的旧样本。您需要连接到textChanged事件。我知道它不是一个完美的解决方案,但可能会给你基本的想法:

int state = 0;
private void IPAddressTxtBox_TextChanged(object sender, TextChangedEventArgs e)
{
            if (state != 1)
            {
                char[] allowedChars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.' };
                string inputText = this.IPAddressTxtBox.Text;

                string result = "";
                foreach (char c in inputText)
                {
                    if (allowedChars.Contains(c))
                    {
                        result += c.ToString();
                    }
                }
                if (!this.IPAddressTxtBox.Text.Equals(result))
                {
                    this.IPAddressTxtBox.Text = result;
                    this.state = 1;
                    this.IPAddressTxtBox.SelectionStart = this.IPAddressTxtBox.Text.Length;
                }

            }
            else if (state == 1)
            {
                state = 2;
            }
        }

答案 1 :(得分:1)

数字键标记为D0 ... D9,但您可能不希望依赖此序列枚举值。

您可以创建静态查找:

static HashSet<Key> numKeys = new HashSet<Key> { Key.D0, ... };  

   if (numKeys.Contains(k)) ...