1. 程式人生 > >winform 程式 動態生成控制元件練習

winform 程式 動態生成控制元件練習

自動生成i個控制元件,生成控制元件的個數不確定,最後程兩列顯示出來。


(辣個,演算法神馬的拿時間懟總能懟出來,不是最優,但可以顯示出來。)

//先查出來總個數,總個數的一半來求每個的高,窗體高度固定,根據總的高度計算           
 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)); 
                }
            }

新增控制元件:
    /// <summary>
      /// 新增文字框
      /// </summary>
      /// <param name="name">名字</param>
     /// <param name="content">內容</param>
      /// <param name="x">控制元件橫座標</param>
      /// <param name="y">縱座標</param>
        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小坑了一把

      從總體上有個思路就寫實踐,先實現再想優化

複雜的東西就是簡單的拼起來的。