一个关于index的问题

asan118 2004-12-15 03:09:51
这里有个适合实验室选项,现在系统已经实现了当添加了实验室信息后在适合实验室选项里就会出现你添加的实验室,但是现在的问题是如果当你没有添加实验室信息就去点适合实验室选项时就会报错,系统提示:指定的参数已超出有效值的范围,参数名: “1”不是“index”的有效值。怎么解决才能使即使没有添加实验室信息时选择适合实验室选项也不报错。我会给吃相关部分的源代码,请讲改动处的代码指出,并写出正确代码。
private void dgrdExperimentEquipment_CellGotFocus(object sender, System.EventArgs e)
{
if(tvwExperimentCatalog.SelectedNode.Tag is clsSubject||
dgrdEquipmentType.Height >0 )
{
txtSelectField=(DataGridTextBox)sender;
txtSelectField.ReadOnly=false;
txtSelectField.DataBindings.Clear();
txtSelectField.DataBindings.Add("Text",dgrdExperimentEquipment.Source,txtSelectField.Tag.ToString().Trim());
string field=txtSelectField.Tag.ToString();
switch(field)
{
case dsExperimentCatalog.TYPE_FIELD:
cboSelectField=new ComboBox();
cboSelectField.Items.Add("分组实验");
cboSelectField.Items.Add("演示实验");
cboSelectField.Dock=DockStyle.Fill;
cboSelectField.DropDownStyle=ComboBoxStyle.DropDownList;
txtSelectField.Controls.Add(cboSelectField);
for(int i=0;i<cboSelectField.Items.Count;i++)
{
if(cboSelectField.Items[i].ToString()==
txtSelectField.Text)
{
cboSelectField.SelectedIndex=i;
break;
}
}
cboSelectField.SelectedIndexChanged+=new EventHandler(cboSelectField_SelectedIndexChanged);
cboSelectField.BringToFront ();
cboSelectField.Focus();
if(cboSelectField.SelectedIndex==-1)
cboSelectField.SelectedIndex=0;
break;
case dsExperimentCatalog.LABINFOID_FIELD://LABINFOID_FIELD就是代表适合实验室
cboSelectField=new ComboBox();
clsSubject objSubject=(clsSubject)tvwExperimentCatalog.SelectedNode.Tag;
dsLabInfo objDS=new dsLabInfo();
m_objLogicAction.GetLabInfo(m_nSchoolID,objSubject.nSubjectID,objDS);
if(objDS.Tables.Count>0)
foreach(DataRow objDR in objDS.Tables[dsLabInfo.TABLE_NAME].Rows)
cboSelectField.Items.Add(objDR[dsLabInfo.PKID_FIELD].ToString());

cboSelectField.Dock=DockStyle.Fill;
cboSelectField.DropDownStyle=ComboBoxStyle.DropDownList;
txtSelectField.Controls.Add(cboSelectField);
for(int i=0;i<cboSelectField.Items.Count;i++)
{
if(cboSelectField.Items[i].ToString()==
txtSelectField.Text)
{
cboSelectField.SelectedIndex=i;
break;
}
}
cboSelectField.SelectedIndexChanged+=new EventHandler(cboSelectField_SelectedIndexChanged);
cboSelectField.BringToFront ();
cboSelectField.Focus();
if(cboSelectField.SelectedIndex==-1)
cboSelectField.SelectedIndex=0;
break;
default:
if(field==dsExperimentCatalog.EXPLAIN_FIELD)
txtSelectField.MaxLength=250;
else if(field==dsExperimentCatalog.GROUPINGSIZE_FIELD)
txtSelectField.MaxLength=3;
else if(field==dsExperimentCatalog.NAME_FIELD)
txtSelectField.MaxLength=100;
else if(field==dsExperimentCatalog.REMARK_FIELD)
txtSelectField.MaxLength=100;
else if(field==dsExperimentCatalog.SEMESTER_FIELD)
txtSelectField.MaxLength=10;
else if(field==dsExperimentCatalog.TARGET_FIELD)
txtSelectField.MaxLength=100;
else if(field==dsExperimentEquipmentType.EQUIPMENTNUMBER_FIELD)
txtSelectField.MaxLength=3;
else if(field==dsExperimentCatalog.PHASE_FIELD)
txtSelectField.MaxLength=25;
else if(field==dsExperimentCatalog.CHARACTER_FIELD)
txtSelectField.MaxLength=25;
else if(field==dsExperimentCatalog.SHOULDDONUMBER_FIELD)
txtSelectField.MaxLength=5;
else
txtSelectField.ReadOnly=true;
txtSelectField.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D ;
txtSelectField.BringToFront ();
txtSelectField.Focus();
break;
}
}
}
...全文
73 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunnydde 2004-12-15
  • 打赏
  • 举报
回复
判断selectindex是否为null
是的话不执行代码并且提示出错信息
kong19 2004-12-15
  • 打赏
  • 举报
回复
当没有选项时index=-1,可以进行判断
wxqq2001 2004-12-15
  • 打赏
  • 举报
回复
我没仔细看代码,我想是不是应该先判断Items.Count是否大于0,是的话再进行SelectedIndex的设置.

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧