组合框C#中的奇怪行为

时间:2015-12-22 15:28:40

标签: c# combobox

我的组合框中有一种奇怪的行为。我有两个组合框,一个是cboSede,另一个是cboGroup。 CboSede启用cboGroup。我已经用其他形式完成了这个但是在这里我得到了这样的消息:用户代码未处理ArgumentOutOfRangeException。这个想法是,如果用户没有在cboSede中选择任何值,则cboGroup未启用,另一方面,如果用户在cboSede中选择了有效选项,则启用cboGroup。

这是我的代码:

cboSede的SelectedIndexChanged

private void cboSede_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (Util.Security.ConexionBD)
        {
            if (Convert.ToInt32(cboSede.SelectedIndex) == 0 || Convert.ToInt32(cboSede.SelectedIndex) == -1)
            {
                cboGroup.Enabled = false;
                cboGroup.SelectedIndex = 0;
            }
            else
            {
                this.FillGroupCombo();
                cboGroup.Enabled = true;
            }

        }
        else
            MessageBox.Show("Error", "Warning",
                            MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }

FillGroupCombo函数

private void FillGroupCombo()
    {
        try
        {
            Entity.Group objGroup = new Entidad.Group ();
            objGroup .IdSede = Convert.ToInt32(cboSede.SelectedValue);
            objGroup = Control.Group.ListBySede(objGroup );

            if (objGroup != null && objGroup.ListGroup.Count > 0)
            {
                Entity.Group objMsje = new Entity.Group();
                objMsje.IdGroup = -1;
                objMsje.Name= "--- Select group ---";
                objGroup.ListGroup.Insert(0, objMsje);
            }
            else
            {
                Entity.Group objMsje = new Entity.Group();
                objMsje.IdGroup = 0;
                objMsje.Name= "-- No groups found --";
                objGroup.ListGroup.Insert(0, objMsje);
            }
            Util.Utilitario.FillCombo(objGroup.ListGroup, this.cboGroup, "IdGrupo", "Name");
        }
        catch (Exception ex)
        {
            Util.Security.Insert(ex);
            Util.Security.SaveLog(ex.Message);
        }
    }

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

这一个

if (Convert.ToInt32(cboSede.SelectedIndex) == 0 || Convert.ToInt32(cboSede.SelectedIndex) == -1)
{
    cboGroup.Enabled = false;
    cboGroup.SelectedIndex = 0;
}

SelectedIndex == -1时会删除代码并且您comboBox实际上有无项目index = 0时为OutOfRange)< / p>

如果需要,您可以提供if条件

if (cboGroup.Items.Count > 0)
    cboGroup.SelectedIndex = 0;

这样,首先检查comboBox确实有什么。如果没有,则不会产生OutOfRange错误

相关问题