none
如何在執行過程中產生物件~ RRS feed

  • 問題

  • 我想再按下某Button後產生textBox1中所輸入的數量之textBox物件

    譬如...textBox1.txt=3...按下Button後就產生3各新的textBox

     

    另外想請教一下...如何把form1 textBox的值傳到form2

     

    感謝

    2008年7月17日 上午 01:39

解答

  • 1. 可以這樣做:

    int Count=int.Parse(textBox1.Text);

    for (int i=0;i<Count;i++)

    {

        TextBox t=new TextBox();

        t.Left=100;

        t.Top=100*i;

       Controls.Add(t);

    }

     

    2. 在form2準備一個可以被form1使用的變數, 由form1建立form2的時候, 填入textbox的內容到變數中

     

    Form2 f=new Form2();

    f.變數=textBox1.Text;

     

    tihs

     

    2008年7月17日 上午 01:47

所有回覆

  • 1. 可以這樣做:

    int Count=int.Parse(textBox1.Text);

    for (int i=0;i<Count;i++)

    {

        TextBox t=new TextBox();

        t.Left=100;

        t.Top=100*i;

       Controls.Add(t);

    }

     

    2. 在form2準備一個可以被form1使用的變數, 由form1建立form2的時候, 填入textbox的內容到變數中

     

    Form2 f=new Form2();

    f.變數=textBox1.Text;

     

    tihs

     

    2008年7月17日 上午 01:47
  •  pennychen 寫信:

    我想再按下某Button後產生textBox1中所輸入的數量之textBox物件

    譬如...textBox1.txt=3...按下Button後就產生3各新的textBox

     

    另外想請教一下...如何把form1 textBox的值傳到form2

     

    感謝

     

    動態產生物件的方法,至於要產生幾個,你自己把textBox1的值取出帶入迴圈就好

    Code Snippet

                TextBox NewTextBox = new TextBox();
                NewTextBox.Name = "textBox2";

                //設定動態產生textBox的位置 x,y座標
                NewTextBox.Location = new Point(50, 50);
                this.Controls.Add(NewTextBox);

     

     

    form1,form2視窗傳值的問題,自己在MSDN論壇搜尋就有了,這是老掉牙的問題了!!

    2008年7月17日 上午 01:48
  • 再請教一下....產生出來的textbox如何在按下button後...怎麼把它的值存下來呢??

     

    TextBox t=new TextBox();

    t.Left=100;

    t.Top=100;

    t.Name="txt1";

    Controls.Add(t);

     

    那我怎麼在程式中抓到txt1.text的值呢??

     

    感謝
    2008年7月17日 上午 07:00
  •  pennychen 寫信:

    再請教一下....產生出來的textbox如何在按下button後...怎麼把它的值存下來呢??

     

    TextBox t=new TextBox();

    t.Left=100;

    t.Top=100;

    t.Name="txt1";

    Controls.Add(t);

     

    那我怎麼在程式中抓到txt1.text的值呢??

     

    感謝

     

    如果你用的Server Control....

    因為是在Clint端向Server request 或 posback時動態編譯才會產生Control

    (Server Control  --> Html Control & JavaScript)

    所以在未編譯前沒有這個Control.....

    須在Load完或事件發生後才能抓到Control

    這時候Clint端的brower為Html Control

    你若是要抓取Control屬性須使用Html的Control屬性

    ex.

    t.Text ( Server Contro l) --> txt1.Value ( Html Control )

     

    因為Control不是Sever Control所以沒有ViewState屬性

    可以在Code使用ViewState來保留Control的值或維持網頁的狀態

    (.NET編譯後的隱藏欄位)

     

    ex.產生出來的textbox如何在按下button後...把它的值存下來

    Code Snippet
    //產生Server Control
    textBox t = new textBox();
    t.ID = "text1";
    t.Location = new Point(99, 99);

    this.Controls.Add(t);

     
    //-----------------------------------------
    // 存入 ViewState 中
    ViewState["text1"] = text1.Value;
    // 從 ViewState 讀取string
    string strText1 = (string)ViewState["text1"];  //ViewState轉換型別

     

     

    2008年7月17日 上午 08:04