繁体   English   中英

组合框C#中的怪异行为

[英]Weird behavior in combobox C#

我的组合框中的行为很奇怪。 我有两个组合框,一个是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);
        }
    }

知道为什么会这样吗?

这个

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

SelectedIndex == -1且您的comboBox实际上没有项目时,将OutOfRange (当index = 0 ,它是OutOfRange

你可以给一个if条件

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

这样,它首先检查comboBox确实有任何东西。 如果没有,则不会产生OutOfRange错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM