繁体   English   中英

C#TextBox仅在字符串开头允许减号(-)

[英]C# TextBox allow minus sign (-) only in the beginning of string

抱歉,这是一个非常基本的问题,但是我是C#的新手,这是我的第一个Windows Form应用程序。

在我的TextBox下面的代码中,它只接受小数点“,”,减号“-”,数字,并且还接受Delete和Backspace键的输入(如果我输入错了,请更正我)。 因此,我可以输入和删除数字,例如:

-12.31
-.31

问题是我也可以输入以下内容:

12-

有没有办法只输入“-”(如果它是字符串的第一个字符)? 我尝试了google,并尝试提出了一些建议,但似乎没有任何效果。

并感谢您的宝贵时间。

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsDigit(e.KeyChar) && (e.KeyChar != ',') && (e.KeyChar != '-') && (e.KeyChar != (char)8))
        {
            e.Handled = true;
        }
        if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf(',') > -1))
        {
            e.Handled = true;
        }

        if ((e.KeyChar == '-') && ((sender as TextBox).Text.IndexOf('-') > -1))
        {
            e.Handled = true;
        }
    }

您可以使用SelectionStart检查光标在哪里:

var textBox = (TextBox)sender;

if (e.KeyChar == '-' && (textBox.SelectionStart !=0 || textBox.Text.Contains("-"))) 
{
  e.Handled = true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM