用户限制组合框输入零

时间:2013-10-17 08:08:43

标签: c# winforms

有没有办法将组合框值限制为'0',其中我的体积值除以目标值,因为我的目标值是组合框并给我一个误差除以零。我试过这个但不是运气。

private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar) && (e.KeyChar != '0'))
            {
                e.Handled = true;
            }

        }

3 个答案:

答案 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。