C# TextBox 只允许在字符串的开头使用减号 (-)
C# TextBox allow minus sign (-) only in the beginning of string
抱歉,如果这是一个非常基本的问题,但我是 C# 的新手,这是我的第一个 windows 表单应用程序。
在下面的代码中,我的文本框只接受小数点“,”,减号“-”,数字,它还接受删除和退格键的输入(如果我错了请纠正我) .所以我可以输入和删除数字,如:
-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;
}
抱歉,如果这是一个非常基本的问题,但我是 C# 的新手,这是我的第一个 windows 表单应用程序。
在下面的代码中,我的文本框只接受小数点“,”,减号“-”,数字,它还接受删除和退格键的输入(如果我错了请纠正我) .所以我可以输入和删除数字,如:
-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;
}