将输入限制为在 C# 中为文本框使用单个连字符 (-)
Restricting input to have a single hyphen (-) for textbox in c#
我目前正在尝试用 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;
}
}
有什么建议吗?
提前致谢。
检查您的控制文本。如果它包含连字符 - 不允许使用另一个连字符。
if(val2.Text.Contains("-"))
{
e.Handled = true;
}
如果您只想允许连字符作为第一个字符,请执行以下操作:
if(val2.Text.Length > 0)
{
e.Handled = true;
}
我目前正在尝试用 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;
}
}
有什么建议吗? 提前致谢。
检查您的控制文本。如果它包含连字符 - 不允许使用另一个连字符。
if(val2.Text.Contains("-"))
{
e.Handled = true;
}
如果您只想允许连字符作为第一个字符,请执行以下操作:
if(val2.Text.Length > 0)
{
e.Handled = true;
}