winform 程序 动态生成控件练习

自动生成i个控件,生成控件的个数不确定,最后程两列显示出来。

winform 程序 动态生成控件练习_第1张图片

(辣个,算法神马的拿时间怼总能怼出来,不是最优,但可以显示出来。)

//先查出来总个数,总个数的一半来求每个的高,窗体高度固定,根据总的高度计算           
 for (int i = 0; i < dt.Rows.Count; i++)
            {
                int height = this.Height / (dt.Rows.Count / 2 + 1);//每个label占的高度,包括空隙(图中红框高度)
                
                if (i <= dt.Rows.Count / 2 )//分两列
                {
                        //左侧
                        addLabel(name, dt.Rows[i][0].ToString().Trim(), 80, height * i);
                        
                }else {
                  
                        //右侧
                        addLabel(name, dt.Rows[i][0].ToString(), 500, height * (i - dt.Rows.Count / 2 - 1)); 
                }
            }

添加控件:

    /// 
      /// 添加文本框
      /// 
      /// 名字
     /// 内容
      /// 控件横坐标
      /// 纵坐标
        public void addTextBox(string name,string content,int x,int y)
        {
            TextBox txt = new TextBox();
            txt.Name = "txt"+name;
            txt.Text = content;
            txt.Width = 100;
            txt.Height = 25;

            txt.Location = new Point(x,y);
           // this.Controls.Add(txt);
            panel1.Controls.Add(txt);
        }


注意:this的使用,我在应用中被this小坑了一把

      从总体上有个思路就写实践,先实现再想优化


复杂的东西就是简单的拼起来的。

你可能感兴趣的:(———,c#)