注册 登录
编程论坛 C# 论坛

索引超出了数组界限问题。

ccccmeiyi 发布于 2016-04-09 21:18, 3714 次点击
namespace _0ne
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();//窗口初始化
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[,] str = new string[2, 3];
            StreamReader sr = File.OpenText("C:\\Users\\Administrator\\Desktop\\myy.txt");
            int k = 0;//当前读取的是第几行
            while (sr.Peek() != -1)
            {
                str[k % 2, k % 2] = sr.ReadLine();
                k++;
            }
            for (int i = 1; i <=3; i++)
            {
                string controlName1 = string.Format("textBox1{0}", i);
                string controlName2 = string.Format("textBox1{0}", i);
                (Controls.Find(controlName1, false)[0]).Text = str[0, i-1];/////为什么这里总是报出索引超出了数组界限。???这是为什么
                (Controls.Find(controlName2, false)[0]).Text = str[1, i-1];
            }
            sr.Close();
        }
6 回复
#2
qq10235692232016-04-09 21:54
程序代码:
while (sr.Peek() != -1)
{
    str[k % 2, k % 2] = sr.ReadLine();  //str[0,2],str[1,2]没有赋值
    k++;
}

(Controls.Find(controlName1, false)[0]).Text = str[0, i-1];  //这个很有可能是没有找到相应的控件,请确定某个控件的name=controlName1
(Controls.Find(controlName2, false)[0]).Text = str[1, i-1];  //最好显式转换相应的控件,如(TextBox)(Controls.Find(controlName2, false)[0])
#3
yhlvht2016-04-10 01:39
短短几行代码就出现了太多的问题
看str[k % 2, k % 2]这玩意儿,行和列下标的值都是k % 2,这代表它们的值都是一样的,也就是只有str[0,0]和str[1,1]会被赋值,str[0,1] str[0,2] str[1,0] str[1,2]都不会被赋值
再看string controlName1 = string.Format("textBox1{0}", i)这东东,我认为textBox1是有的,但textBox11,textBox12,textBox13就不一定有了,你说是么
#4
ccccmeiyi2016-04-10 12:37
回复 2楼 qq1023569223
嗯~谢谢。请问有没有学习c#界面设计的视频推荐啊。
#5
ccccmeiyi2016-04-10 12:37
回复 2楼 qq1023569223
嗯~谢谢。请问有没有学习c#界面设计的视频推荐啊。
#6
qq10235692232016-04-10 13:11
这个我没有,你可以网上找找看,技术方面的东西可以上MSDN看。
#7
ccccmeiyi2016-04-10 14:21
回复 6楼 qq1023569223
嗯,,
1