如何为","做例外和"。"在KeyPress活动?

时间:2013-01-13 20:12:05

标签: c#

注意:这不是关于EXCEPTIONS!

我正在尝试让文本框接受除了符号和标点之外的所有内容......但我需要允许“,”和“。” 。我正在使用:

if (char.IsPunctuation(e.KeyChar) == true)
{
     e.Handled = true;
}

if (char.IsSymbol(e.KeyChar) == true)
{
     e.Handled = true;
}

有没有为这两个字符(,和。)做出异常?

2 个答案:

答案 0 :(得分:3)

首先检查这些字符:

if(e.KeyChar != ',' && e.KeyChar != '.')
{
    if (char.IsPunctuation(e.KeyChar))
    {
         e.Handled = true;
    }

    if (char.IsSymbol(e.KeyChar))
    {
         e.Handled = true;
    }
}

关于样式的注意事项:无需将布尔值与true进行比较,以便进行分支。

答案 1 :(得分:2)

试试这个:

if (char.IsPunctuation(e.KeyChar) && e.KeyChar != ',' && e.KeyChar != '.')
{
     e.Handled = true;
}

if (char.IsSymbol(e.KeyChar) && e.KeyChar != ',' && e.KeyChar != '.')
{
     e.Handled = true;
}

或者您可以在所有这些之前检查它:

if( e.KeyChar != ',' && e.KeyChar != '.')
{
    if (char.IsPunctuation(e.KeyChar) )
    {
         e.Handled = true;
    }

    if (char.IsSymbol(e.KeyChar) )
    {
         e.Handled = true;
    }
}

它做的是检查字符是否是标点/符号,并且字符不是','或'。'。因此,如果字符是逗号或句点,则不会运行if语句。