3

我使用下面的代码不允许文本框中除数字以外的任何字符......但它允许'。' 特点!我不希望它允许点。

    private void txtJustNumber_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsDigit((char)(e.KeyChar)) &&
            e.KeyChar != ((char)(Keys.Enter)) &&
            e.KeyChar != (char)(Keys.Delete) &&
            e.KeyChar != (char)(Keys.Back)&&
            e.KeyChar !=(char)(Keys.OemPeriod))
        {
            e.Handled = true;
        }
    }
4

4 回答 4

3

用这个:

    if (!char.IsDigit((char)(e.KeyChar)) &&
            e.KeyChar != ((char)(Keys.Enter)) &&
            (e.KeyChar != (char)(Keys.Delete) || e.KeyChar == Char.Parse(".")) &&
            e.KeyChar != (char)(Keys.Back) 
            )

这是因为 Keys.Delete 的 char 值为 46,与 '.' 相同。我不知道它为什么喜欢这个。

于 2012-10-25T19:01:31.057 回答
0

你可以试试这个(textBox1你的文本框在哪里):

// Hook up the text changed event.
textBox1.TextChanged += textBox1_TextChanged;

...

private void textBox1_TextChanged(object sender, EventArgs e)
{
    // Replace all non-digit char's with empty string.
    textBox1.Text = Regex.Replace(textBox1.Text, @"[^\d]", "");
}

或者

// Save the regular expression object globally (so it won't be created every time the text is changed).
Regex reg = new Regex(@"[^\d]");

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (reg.IsMatch(textBox1.Text))
        textBox1.Text = reg.Replace(textBox1.Text, ""); // Replace only if it matches.
}
于 2012-10-25T18:51:41.663 回答
0

在按键事件中尝试使用此代码解决您的问题:

   private void txtMazaneh_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsDigit(e.KeyChar) && (int)e.KeyChar != 8 ||(e.KeyChar= .))
            e.Handled = true;
    }
于 2014-06-25T08:17:40.063 回答
-1
//This is the shortest way
private void txtJustNumber_KeyPress(object sender, KeyPressEventArgs e)
{
    if(!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
    {
        e.Handled = true; 
    }
}
于 2013-08-09T03:55:28.543 回答