C#索引超出了数组界限

privatevoidlistBox1_SelectedIndexChanged(objectsender,EventArgse){str3=Convert.ToStri... private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
str3 = Convert.ToString(listBox1.SelectedIndex);
string[] sArray = str3.Split(new string[] { "'\t'" }, StringSplitOptions.RemoveEmptyEntries);
textBox2.Text = sArray[1];
textBox3.Text = sArray[2];
textBox4.Text = sArray[3];
comboBox1.SelectedIndex = Convert.ToInt32(sArray[4].Trim());
}
展开
 我来答
码斯客
2011-07-08 · TA获得超过2224个赞
知道小有建树答主
回答量:993
采纳率:50%
帮助的人:607万
展开全部
搞笑。
你必须确保str3这个字符串被分割成5段以上,存放在sArray数组里。否则就会索引超出数组界限。你看sArray[4]已经访问了数组的第5个元素了。
话说回来,良好的编程习惯应该有基本的逻辑判断与异常处理代码。看你的代码,一样都没有。
追问
实际上,这个字符串已经被分割10段以上了,还有这只是个片段而已~~~
追答
你这样断章取义的拿一小片段代码出来,然后说它们有错。这会误导问答者。我无法回答你了。这样的话,你只能自己调试了,断点、单步吧,那更有效果。
落月Prc
2011-07-09 · TA获得超过2789个赞
知道大有可为答主
回答量:2011
采纳率:100%
帮助的人:2442万
展开全部
先分析出错原因:
str3 = Convert.ToString(listBox1.SelectedIndex);中,listBox1.SelectedIndex是一个int型数据,转换成字符串以后,使用Split以后的string[] sArray,肯定只有一个元素。
修改为:
str3 = Convert.ToString(listBox1.SelectedValue);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友699a4df
2011-07-14 · TA获得超过1375个赞
知道小有建树答主
回答量:1079
采纳率:0%
帮助的人:362万
展开全部
str3 = Convert.ToString(l;

可以直接使用 istBox1.SelectedIndex.toString()转化成字符串

comboBox1.SelectedIndex = Convert.ToInt32(sArray[4].Trim());????
要看你的 string[] sArray 提取到了几项了。加一个 length 检测,
如果 只有2项,,,,那你就越界了......
错误发生在:::::

textBox3.Text = sArray[2];
textBox4.Text = sArray[3];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
149032105
2011-07-08 · TA获得超过756个赞
知道小有建树答主
回答量:1029
采纳率:0%
帮助的人:669万
展开全部
1.确定sArray有5个以上的元素
2.看Convert.ToInt32(sArray[4].Trim()); 这个值 是不是超过了combobox1的Item数+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yhl_bd
2011-07-08 · TA获得超过215个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:160万
展开全部
str3 = Convert.ToString(listBox1.SelectedIndex);
是选的第几项,不是选中的值.你这str3=4什么的
你先输出看是什么,是不是你要的值

参考资料: www.wotui.net

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式