首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

自动生成控件checkbox 换行有关问题

2013-02-18 
自动生成控件checkbox 换行问题 public static void ChecckBoxGroup(GroupBox group, DataTable dt)//生成

自动生成控件checkbox 换行问题
 public static void ChecckBoxGroup(GroupBox group, DataTable dt)//生成checkbox
       {
           for (int i = dt .Rows .Count-1 ; i >= 0; i--)
           {
               //RadioButton rb = new RadioButton();
               CheckBox rb = new CheckBox();
               rb.Dock = DockStyle.Left;
               rb.Top = group.Top + 10*i;
               rb.Tag = i.ToString();
               rb.Text = dt .Rows [i][0].ToString ();
               rb.Padding = new Padding(0, 0, 2, 0);
               rb.AutoSize = true;
             
               group.Controls.Add(rb);
           }

       
       }
这方法我写好了,不知道如何处理自动换行问题,checkbox 数量多了之后,后面的就看不到了。
假设设置一行显示5个。如何自动换行。
[解决办法]
你这个根本就不可能实现你的要求。
        public void ChecckBoxGroup(GroupBox group, DataTable dt)//生成checkbox
        {
            int iRemain;
            int iCount = Math.DivRem(dt.Rows.Count - 1, 5, out iRemain);
            int index = dt.Rows.Count - 1;
            for (int i = 0; i < iCount; i++)
            {
                int left = 0;
                for (int j = 0; j < 5;j++ )
                {
                    CheckBox rb = new CheckBox();
                    rb.Tag = index.ToString();
                    rb.Text = dt.Rows[index][0].ToString();
                    rb.Padding = new Padding(0, 0, 2, 0);


                    rb.AutoSize = true;
                    rb.Top = i * rb.Height + 10;
                    rb.Left = left;
                    left += rb.Width;
                    index--;
                    group.Controls.Add(rb);
                }
            }
            if (iRemain > 0)
            {
                int left = 0;
                for (int j = 0; j < iRemain; j++)
                {
                    CheckBox rb = new CheckBox();
                    rb.Tag = index.ToString();
                    rb.Text = dt.Rows[index][0].ToString();
                    rb.Padding = new Padding(0, 0, 2, 0);
                    rb.AutoSize = true;
                    rb.Top = (iCount+1) * rb.Height + 10;
                    rb.Left = left;
                    left += rb.Width;
                    index--;
                    group.Controls.Add(rb);
                }
            }
        }

热点排行