我想删除用户在文本框中按下的一个字符减去-
。我验证用户没有使用事件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< ---有效
如何确保减号开始显示文本框的内容?
答案 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;
}