簡體   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