0

有没有办法将组合框值限制为“0”,其中我的音量值除以目标值,因为我的目标值是组合框,并给我一个错误除以零。我试过这个但不走运。

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

        }
4

3 回答 3

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 快捷方式等。

于 2013-10-17T08:26:18.033 回答
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;
        }
    }
于 2013-10-17T08:36:46.400 回答
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。

于 2013-10-17T08:39:18.053 回答