有没有办法将组合框值限制为'0',其中我的体积值除以目标值,因为我的目标值是组合框并给我一个误差除以零。我试过这个但不是运气。
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar) && (e.KeyChar != '0'))
{
e.Handled = true;
}
}
答案 0 :(得分:5)
简单的方法是处理TextChanged
事件并将其重置为之前的值。
或者如评论中所建议的那样,不允许用户输入值只是让他从列表中选择(DropDownList样式)。
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快捷键等。
答案 1 :(得分:0)
你可以试试这个:
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar)
|| (e.KeyChar == '0'
&& this.comboBox1.Text.Length == 0))
{
e.Handled = true;
}
}
答案 2 :(得分:0)
如果您确实希望使用此事件来阻止输入零,请考虑以下事项:
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。