读书人

异常累死人也找不出来

发布时间: 2013-08-16 14:29:57 作者: rapoo

错误,累死人也找不出来,大家帮忙看看啊
private void ShowSelf()
{
string sql = "select nickname,faceid,sex,age,Loginpwd,friendshippolicyid,[name],starid,bloodtypeid from USers where id = " + UserHelper.id;
using (DataTable dt = DBHelper.GetData(sql))
{
picFace.Image=ilFaces.Images[int.Parse(dt.Rows[0]["faceid"].ToString())];
picFace.Tag = int.Parse(dt.Rows[0]["faceid"].ToString());
txtId.Text = UserHelper.id;
txtAge.Text = dt.Rows[0]["age"].ToString();
txtNickName.Text = dt.Rows[0]["nickname"].ToString();
cmSex.Text = dt.Rows[0]["Sex"].ToString();
if (!(dt.Rows[0]["name"] is DBNull))
{
txtName.Text = dt.Rows[0]["name"].ToString();
}
if (!(dt.Rows[0]["starid"] is DBNull))
{
cmStar.SelectedIndex = int.Parse(dt.Rows[0]["starid"].ToString());// 错误::InvalidArgument=“8”的值对于“SelectedIndex”无效。
参数名: SelectedIndex

}
else
{
cmStar.SelectedIndex = 0;


}
if (!(dt.Rows[0]["bloodtypeid"] is DBNull))
{
cmBlood.SelectedIndex = int.Parse(dt.Rows[0]["bloostypeid"].ToString());
}
else
{
cmBlood.SelectedIndex = 0;
}


switch (int.Parse(dt.Rows[0]["friendShippolicyid"].ToString()))
{
case 1:
rdoAllow.Checked = true;
break;
case 2:
rdoQuestion.Checked = true;
break;
default:
rdoNoAllow.Checked = true;
break;
}


}
}

                                                                            
[解决办法]
cmStar.Items.Count 看看有没有9个。你这个错就是没有9个item,取索引8,越界了。
[解决办法]
判断下,大约索引最大值的话就扔掉,1,2,3,楼说得有理,仔细查下,要不知道索引最大值也可以,限制死赋值的数据也行
[解决办法]
这代码怎么看怎么像北大青鸟的经典教程MyQQ项目
[解决办法]
InvalidArgument=“8”的值对于“SelectedIndex”无效。


很显然你的错误是输出的是字符串"8"而不是int 类型的8,但是你的SelectedIndex只能接收int类型的8,无法接收字符串类型的"8"
[解决办法]



引用:
InvalidArgument=“8”的值对于“SelectedIndex”无效。


很显然你的错误是输出的是字符串"8"而不是int 类型的8,但是你的SelectedIndex只能接收int类型的8,无法接收字符串类型的"8"

抱歉,我看错了,你里面有个int类型的转换,那应该不是这个问题了
[解决办法]
cmStar中的项如果是动态加载,就可能是调用顺序的问题
第一步.cmStart加载内容
第二部.调用ShowSelf()

这种问题定个断点调试下不就知道了
[解决办法]
11楼说的对,你可以试下手动赋值SelectedIndex,看看是否成功,如果成功则是后边取值的问题,如果失败,看ComboBox是否有该索引。

读书人网 >C#

热点推荐