日期:2014-05-17  浏览次数:20773 次

listview循环添加Button后位置问题
C# code

        private void Form1_Load(object sender, EventArgs e)
        {
            int i = 1;
            int j;
            int r = 0;
            int btnwidth = 130;
            int h = Convert.ToInt32(System.Math.Truncate((double)listView1.Width / btnwidth));
            for (i = 0; i < 16; i++)
            {               
                j = i % h;
                if (j == 0) r++;
                Button btn = new Button();
                btn.Name = "btn" + (i + 1).ToString();
                btn.Text = (i + 1).ToString();
                btn.Size = new Size(btnwidth, btnwidth);
                btn.Left = 0 + (j) * btnwidth;
                btn.Top = 0 + (r) * btnwidth;
                btn.Click += new EventHandler(btn_Click);
                this.listView1.Controls.Add(btn);
            }
        }



运行后,第一行总是行出来,从第二行开始循环添加,btn.Top初始时就附成了100,怎么能让他初始时附成0!

------解决方案--------------------
if (j == 0) r++;
把这条改成if (j == 0&&i!=0) r++;
这样就可以了。因为程序开始进去 i=0,那么j肯定等于0,这样r=1.第一行的top就是btnwidth了。