限制输入以在c#中为文本框设置单个连字符( - )

时间:2016-12-31 12:45:51

标签: c# visual-studio-2012

我目前正在尝试在C#中创建一个计算器,它接受来自两个文本框的数据并对它们执行操作。我在处理负值时遇到问题,特别是限制文本框在开始时只有一个连字符。这是我尝试过的代码,但是如果我使用退格键删除连字符,那么我就无法再将它删回。

    bool neg = false;
    private void val2_KeyPress(object sender, KeyPressEventArgs e)
    {
        char ch = e.KeyChar;
        if (!Char.IsDigit(ch) && ch != 8 && ch != 127 && ch != 46 && ch != 45)
        {
            e.Handled = true;
        }
        else if (ch == 46)
        {
            if (pnt2 == true)
            {
                e.Handled = true;
            }
            pnt2 = true;
        }
        else if (ch == 45)
        {
            if (neg == true)
            {
                e.Handled = true;
            }
            neg = true;
        }
    }

有什么建议吗? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

检查您的控制文字。如果它包含连字符 - 不允许使用连字符。

if(val2.Text.Contains("-"))
{
   e.Handled = true;
}

如果您想仅允许连字符作为第一个字符,请执行以下操作:

if(val2.Text.Length > 0)
{
   e.Handled = true;
}
相关问题