按用户限制组合框输入零

本文关键字:输入 组合 用户 | 更新日期: 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 。