我的组合框中有一种奇怪的行为。我有两个组合框,一个是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);
}
}
知道为什么会这样吗?
答案 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
错误