none
隨即產生的textbox 內輸入的入值應該怎要儲存呢 RRS feed

  • 問題

  • 如題 小弟想問 我已經會利用滑鼠點擊產生我要的textbox

    而現在的問題是想要收集輸入在textbox 那輸入的數值 應該要怎樣做呢

    以下為我的程式碼

            private int cb;
            private int db;
            private void Form1_MouseDown(object sender, MouseEventArgs e)//滑鼠點擊產生點
            {
                this.SuspendLayout();
                TextBox tb1 = new TextBox();
                TextBox tb2 = new TextBox();
                tb1.Location = new System.Drawing.Point(e.X, e.Y);//產生產能文字方塊
                tb2.Location = new System.Drawing.Point(e.X + 31, e.Y);//產生需求文字方塊
                tb1.Name = "textBox" + cb.ToString();//命名tb1
                tb2.Name = "textBox" + db.ToString();//命名tb2
                tb1.Size = new System.Drawing.Size(30, 30);
                tb2.Size = new System.Drawing.Size(30, 30);
                tb1.TabIndex = cb;
                tb2.TabIndex = db;
                cb++;
                db++;
                this.Controls.Add(tb1);
                this.Controls.Add(tb2);
                this.ResumeLayout(false);

            }

    以上 不知大大可否知道我再問什麼呢

    2010年5月1日 上午 09:29

解答

  • 你似乎不瞭解什麼叫執行個體 (Instance) ?

    所謂的執行個體表示為實際存在於記憶體中的物件, 每個執行個體都是獨一無二的.

    以你的程式碼來說:

                TextBox tb1 = new TextBox();
                TextBox tb2 = new TextBox();

    這表示產生兩個繼承TextBox類別的執行個體, 分別為tb1與tb2, 這兩個東西在記體體中有獨立的記憶體空間, 所以你如果去比較tb1與tb2是否相等會得到false.

    把以下文件讀通

    [new 運算子 (C# 參考) ]

    [物件導向程式設計簡介 ]

    要更深入了解物件導向, 去找這本書來看

    [世紀末軟體革命復刻版:C++、GUI與物件導向理論 ]


    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    • 已標示為解答 Lolota Lee 2010年5月7日 上午 02:59
    2010年5月2日 上午 09:04

所有回覆

  •   TextBox testTextbox = new TextBox (); <--先產生一個TextBox執行個體, 等等要用來比對型別
              
                foreach (Control con in this.Controls) <--例用 foreach 找出this上的每一個Control
                {
                    if(con.GetType() ==   testTextbox.GetType () ) <--如果這個Control的型別是TextBox
                    {
                        /// 在這邊可以用 ((TextBox)con).Text 取出Text屬性看你要用在哪之類的.
                    }
                   
                }
    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    2010年5月1日 上午 10:06
  • 大大你好

                我打用List來收集textbox 那的數值 應該怎樣做呢

    感謝大大的幫忙

    2010年5月1日 上午 10:55
  • 你指 List(Of T ) 類別 ?

    不就是產生一個List類別執行個體, 然後用List.Add方法就行了嗎 ?


    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    2010年5月1日 下午 12:38
  • 大大你好

    因為我在上面已經有宣告2個

      TextBox tb1 = new TextBox();
      TextBox tb2 = new TextBox();

    不好意思喔 我有點不太懂 為啥要宣告

    TextBox testTextbox = new TextBox ();

    還有就是

               if(con.GetType()==textTextBox.GetType())

              {

                        這裡面應該打啥XDDD

              }

    抱歉新手 請見諒

    2010年5月2日 上午 07:31
  • 不好意思喔 我有點不太懂 為啥要宣告

    TextBox testTextbox = new TextBox ();

     

    因為你說你的TextBox是用動態產生的, 所以我假設一個狀況是: 無法得知產生的TextBox名稱 . 那因為要比對Type, 所以要有個執行個體來比對. 那既然你原來就有宣告, 那就不用再 宣告這個. 可以改成 if(con.GetType() ==   tb1.GetType () )

    裡面要打啥? 我也不知道你要打啥, 因為我根本不知道你想做什麼. 問你是不是要用 List(of T) 類別, 你也沒答覆我, 而且你可能也連那個連結也沒看, 所以你期待我回答什麼 ?


    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    2010年5月2日 上午 07:43
  • 大大你好

    不好意思 我沒有注意到連結 

    目前我是在未宣告2個

    List<int> c = new List<int> { };
    List<int> d = new List<int> { };

    然後把tb1.text及tb2.text的數值

    給輸入到c.Add()及d.Add()內

    但我目前的問題就是怎樣放進去

    我是這樣寫在

    if(con.GetType() ==   tb1.GetType () )

    {

    c.Add(Convert.ToInt32(tb1.text))

    }

    if(con.GetType() ==   tb2.GetType () )

    {

    d.Add(Convert.ToInt32(tb2.text))

    }

    但執行之後卻出現了格式不對的問題

    感謝大大

    2010年5月2日 上午 08:09
  • (1) if(con.GetType() ==   tb1.GetType () ) <--這個只是判斷Type, 並不是判斷執行個體的名稱. 你要判斷執行個體, 就直接比較執行個體

    ex: if (((TextBox)con) == textBox1)

    (2) List<int> c = new List<int> { }; --> 這樣宣告怪怪的吧, -->List<int> c = new List<int> ();

    (3) 你使用Int Type, 如果TextBox中有空白, 或是無法轉換成 int  type的字元, 在執行時就會出現格式錯誤

    (4) 你那個Add其實滿怪的, 如果你要直接用執行個體 c.Add(Convert.ToInt32(tb1.text )) 那何必還判斷 ?

                foreach (Control con in this.Controls)
                {
                    if (con.GetType() == testTextbox.GetType())
                    {
                  
                            c.Add(System.Convert.ToInt32(((TextBox)con).Text));
                    }

                }


    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    2010年5月2日 上午 08:31
  • 大大你好

    因為我有2個textbox分別為tb1及tb2

    (1)那我在

    TextBox testTextbox = new TextBox (); <--先產生一個TextBox執行個體, 等等要用來比對型別
    階段 是不是也要應該要在產生另一個新的TextBox執行個體 來比較執行個體呢

    (2)再來就是因為我動態產生的textbox剛開始是空白的 所以才會出現格式錯誤的問題

    那我應該怎樣做才可以解決這個問題了

     

    2010年5月2日 上午 08:54
  • 你似乎不瞭解什麼叫執行個體 (Instance) ?

    所謂的執行個體表示為實際存在於記憶體中的物件, 每個執行個體都是獨一無二的.

    以你的程式碼來說:

                TextBox tb1 = new TextBox();
                TextBox tb2 = new TextBox();

    這表示產生兩個繼承TextBox類別的執行個體, 分別為tb1與tb2, 這兩個東西在記體體中有獨立的記憶體空間, 所以你如果去比較tb1與tb2是否相等會得到false.

    把以下文件讀通

    [new 運算子 (C# 參考) ]

    [物件導向程式設計簡介 ]

    要更深入了解物件導向, 去找這本書來看

    [世紀末軟體革命復刻版:C++、GUI與物件導向理論 ]


    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    • 已標示為解答 Lolota Lee 2010年5月7日 上午 02:59
    2010年5月2日 上午 09:04