按用户限制组合框输入零
本文关键字:输入 组合 用户 | 更新日期: 2023-09-27 18:35:54
有没有办法将组合框值限制为"0",其中我的体积值除以目标值,因为我的目标值是组合框并给我一个误差除以零。我试过这个,但没有运气。
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar) && (e.KeyChar != '0'))
{
e.Handled = true;
}
}
简单的方法是处理TextChanged
事件并将其重置回以前的值。或者按照评论中的建议,不允许用户输入值,只是让他从列表中选择(下拉列表样式)。
private string previousText = string.Empty;
private void comboBox1_TextChanged(object sender, EventArgs e)
{
if (comboBox1.Text == "0")
{
comboBox1.Text = previousText;
}
previousText = comboBox1.Text;
}
我提出这个解决方案,因为处理关键事件是一场噩梦,您需要检查以前的值、复制 + 粘贴菜单、Ctrl+ V 快捷方式等。
你可以试试这个:
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar)
|| (e.KeyChar == '0'
&& this.comboBox1.Text.Length == 0))
{
e.Handled = true;
}
}
如果您确实希望使用此事件来阻止零的输入,请考虑以下事项:
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar))
{
e.Handled = true;
return;
}
if (e.KeyChar == '0')
{
if (comboBox1.Text == "")
{
e.Handled = true;
return;
}
if (int.Parse(comboBox1.Text) == 0)
{
e.Handled = true;
return;
}
}
}
代码可以有点整理,但希望它展示了一种阻止前导零的简单方法 - 我认为这就是你所追求的。当然,一旦逻辑正确,这些子句就可以全部组合成一个 IF 。