如何在字符串c#中删除字符减去( - )中间或结尾

时间:2016-04-13 15:41:33

标签: c# winforms visual-studio c#-4.0

我想删除用户在文本框中按下的一个字符减去-。我验证用户没有使用事件key_press按两次减号键:

if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.') && (e.KeyChar != '-'))
{
     e.Handled = true;
}

 // only allow one minus -

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

问题是当用户在字符串的中间或末尾按下减号键时。例如:

1000.-00< ---无效

2000.00-< ---无效

-1000.00< ---有效

如何确保减号开始显示文本框的内容?

3 个答案:

答案 0 :(得分:0)

像这样使用

  

在类级别声明一个变量,如int minusCount = 0;

1

答案 1 :(得分:0)

public class SomeClass
{
    public static double someMethod()
    {
        //do something
    }
}
public class AnotherClass : SomeClass
{

} 

这在开头只允许一个短划线。也许你需要首先修剪文本......

答案 2 :(得分:0)

第二个if的问题在于,当您进行检查时,sender(即TextBox)还没有减号。您应该使用减去第一个构造文本,然后验证它以做出决定:

if (e.KeyChar == '-') {
    var tb = sender as TextBox;
    // Obtain the text after the modification
    var modifiedText = tb.Text.Insert(tb.SelectionStart, "-");
    // There will be at least one '-' in the text box - the one you just inserted.
    // Its position must be 0, otherwise the string is invalid:
    e.Handled = modifiedText.LastIndexOf("-") != 0;
}