组合框C#中的怪异行为
本文关键字:组合 | 更新日期: 2023-09-27 18:27:54
我的组合框中有一个奇怪的行为。我有两个组合框,一个是cboSede,另一个是cboGroup。CboSede启用cboGroup。我已经在其他形式中这样做了,但在这里我得到了这样的消息:用户代码未处理ArgumentOutOfRangeException。其想法是,如果用户没有在cboSede中选择任何值,则cboGroup将不启用;另一方面,如果用户在cboSide中选择了有效选项,则cboCroup将启用。
这是我的代码:
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
中实际上没有项目(当index = 0
时,它是OutOfRange
)
如果你想要,你可以给出if
条件
if (cboGroup.Items.Count > 0)
cboGroup.SelectedIndex = 0;
这样,它首先检查comboBox
是否真的有任何东西。如果没有,则不会产生OutOfRange
错误