索引更改后启用和禁用组合框

时间:2015-11-17 17:07:23

标签: c# winforms combobox selectedindexchanged

我正在开发一个软件而且我遇到了一些麻烦。我有两个组合框,第一个填充第二个组合框,但如果第一个组合框的值等于-1,则第二个组合框不启用。这是我的代码的和平:

 private void FillComboGroup()
    {
        try
        {
             //here I initialize an object

            if (Convert.ToInt32(this.cboSede.SelectedValue) > -1)
            {
               //the code here just retrieves an object
            }
            else
            {
                this.cboEmpleado.Enabled = false;
                this.cboEmpleado.BackColor = Color.White;
            }
        }
        catch (Exception ex)
        {
            //here are some methods to save the exception in the log
        }

嗯,第一次没有问题。当表单第一次加载时,第二个组合框未启用,然后我更改第一个组合框值,现在启用第二个组合。但是如果我再将第一个组合框放在第一个值中("请选择一个选项......",其值为-1),则启用第二个组合。我尝试使用SelectedIndexChanged和SelectionChangeCommited但不起作用。有关如何解决它的任何想法?提前谢谢。

private void cboSede_SelectedIndexChanged(object sender, EventArgs e)
    {

            this.FillComboGroup();
    }

2 个答案:

答案 0 :(得分:4)

检查索引时,您使用的是SelectedValue而不是SelectedIndex

它应该是这样的:

private void FillComboGroup()
{
    try
    {
        if (cboSede.SelectedIndex > 0)
        {
           //the code here just retrieves an object

            // YOU'LL PROBABLY WANT TO ENABLE THE SECOND COMBO AGAIN HERE
        }
        else
        {
            cboEmpleado.Enabled = false;
            cboEmpleado.BackColor = Color.White;
        }
    }
    catch (Exception ex)
    {
        //here are some methods to save the exception in the log
    }
}

答案 1 :(得分:1)

你的问题在于组合框的id中的第一个对象是0而不是-1,-1是未选择的值你应该尝试这样的事情:

private void FillComboGroup()
{
    try
    {
        if (cboSede.SelectedIndex > 0)
        {
           //the code here just retrieves an object
        }
        else
        {
            cboEmpleado.Enabled = false;
            cboEmpleado.BackColor = Color.White;
        }
    }
    catch (Exception ex)
    {
        //here are some methods to save the exception in the log
    }
}