none
Window From 如何做到動態產生物件? RRS feed

  • 問題

  • Dear all:
    我想利用去讀取資料庫中某個table,而假設這table裡面的欄位有ID、NAME、TEL,然後利用這三個欄位在表單上產生三個Label當然這三個Labe的名稱也就分別為ID、NAME、TEL,請問要怎麼做呢?比如假設我選到某個table裡面的欄位有ID、NAME、TEL這三個欄位,在畫面產生三個label分別為ID、NAME、TEL這三個欄位的label,我想做到的是這樣.....可以的話請提供相關資料或範例~謝謝.
    2007年6月23日 上午 07:28

解答

  • 最簡單的方法: 

    Code Snippet

    Label label = new Label();

     

    label.Text = "xxxxx";

     

    this.Panel1.Controls.Add(label);

     

     

    2007年6月23日 上午 08:18
    版主

所有回覆

  • 直接用程式產生控制項,然後放到容器控制項(例如表單)就可以了 .

     

    不過通常是在表單上多放一個容器控制項,例如 Panel,然後只要在這個 Panel 中存取控制項就行了 .

    2007年6月23日 上午 08:04
    版主
  • Dear 小朱 :

                        我是打算放在Panel沒錯,可是能請教的是怎麼動態產生呢?是否可提供範例或是參考文獻?

    2007年6月23日 上午 08:09
  • 最簡單的方法: 

    Code Snippet

    Label label = new Label();

     

    label.Text = "xxxxx";

     

    this.Panel1.Controls.Add(label);

     

     

    2007年6月23日 上午 08:18
    版主
  • Dear 小朱:

                       看了你的範例後我就這樣寫來產生物件,可以請問一下就是這些物件產生後

                        要怎麼再把它們清除呢?因為我有可能選了第一個table後可能選錯了重選時會造成上一次選的會存在

     

    Code Snippet

               for (int i = 0; i < set.Tables[tableName].Columns.Count; i++)
                {
                    string columnName = set.Tables[tableName].Columns[i].ColumnName.ToString();
                    Label label = new Label();
                    label.Name = columnName;
                    label.Text = columnName;
                    splitContainer2.Panel1.Controls.Add(label);
                }

     

    2007年6月25日 上午 02:40
  • 如果你有暫存 Label 物件的話,可以用: 

    Code Snippet

    splitContainer2.Panel1.Controls.Remove(label);

     

    來移除控制項。

     

    但如果沒暫存,你就得要由 splitContainer2.Panel1.Controls 中先抓出你要移除的 Label,然後一樣用 Remove() 移除。

    2007年6月25日 上午 03:36
    版主
  • Dear 小朱:

                       可以再請問你一個問題就是比如上面自動產生後會有好幾個Label,那要怎麼取的這些name?

                       因為我有點不太懂得是當我按下button後要怎麼去抓取自動產生的所有物件名稱?

     

    (感謝小朱熱心幫忙!!)

    2007年6月25日 上午 06:09
  • 那你就要在建立物件時暫存住物件的 ID(可使用 List<string>)。

    不過通常都要把 Label 的命名單純化,這樣在抓取時也會比較容易。

    2007年6月25日 上午 08:27
    版主