[英]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.