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());
} 展开
{
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());
} 展开
展开全部
搞笑。
你必须确保str3这个字符串被分割成5段以上,存放在sArray数组里。否则就会索引超出数组界限。你看sArray[4]已经访问了数组的第5个元素了。
话说回来,良好的编程习惯应该有基本的逻辑判断与异常处理代码。看你的代码,一样都没有。
你必须确保str3这个字符串被分割成5段以上,存放在sArray数组里。否则就会索引超出数组界限。你看sArray[4]已经访问了数组的第5个元素了。
话说回来,良好的编程习惯应该有基本的逻辑判断与异常处理代码。看你的代码,一样都没有。
追问
实际上,这个字符串已经被分割10段以上了,还有这只是个片段而已~~~
追答
你这样断章取义的拿一小片段代码出来,然后说它们有错。这会误导问答者。我无法回答你了。这样的话,你只能自己调试了,断点、单步吧,那更有效果。
展开全部
先分析出错原因:
str3 = Convert.ToString(listBox1.SelectedIndex);中,listBox1.SelectedIndex是一个int型数据,转换成字符串以后,使用Split以后的string[] sArray,肯定只有一个元素。
修改为:
str3 = Convert.ToString(listBox1.SelectedValue);
str3 = Convert.ToString(listBox1.SelectedIndex);中,listBox1.SelectedIndex是一个int型数据,转换成字符串以后,使用Split以后的string[] sArray,肯定只有一个元素。
修改为:
str3 = Convert.ToString(listBox1.SelectedValue);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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];
可以直接使用 istBox1.SelectedIndex.toString()转化成字符串
comboBox1.SelectedIndex = Convert.ToInt32(sArray[4].Trim());????
要看你的 string[] sArray 提取到了几项了。加一个 length 检测,
如果 只有2项,,,,那你就越界了......
错误发生在:::::
textBox3.Text = sArray[2];
textBox4.Text = sArray[3];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.确定sArray有5个以上的元素
2.看Convert.ToInt32(sArray[4].Trim()); 这个值 是不是超过了combobox1的Item数+1
2.看Convert.ToInt32(sArray[4].Trim()); 这个值 是不是超过了combobox1的Item数+1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
str3 = Convert.ToString(listBox1.SelectedIndex);
是选的第几项,不是选中的值.你这str3=4什么的
你先输出看是什么,是不是你要的值
是选的第几项,不是选中的值.你这str3=4什么的
你先输出看是什么,是不是你要的值
参考资料: www.wotui.net
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询