none
在Vs2005 Form中,無法正確的抓取動態產生控制項的值 RRS feed

  • 問題

  • 各位好,我在頁面中動態產生了一個maskedbox(thistime)和一個botton (saveBT), 並在botton中建立了一個Click 的事件,以下是我的程式碼,請各位先進指導一下
    出錯的錯誤訊息是"並未將物件參考設定為物件的執行個體",可是在頁面上是看的到耶
     public void showmessage(object sender , System.EventArgs e)
            {        
                this.Visible = true;
                this.ControlBox = true;
                this.MinimizeBox = true;
                this.ShowInTaskbar = true;
                this.WindowState = System.Windows.Forms.FormWindowState.Normal;
                //建立maskbox
                MaskedTextBox thistime = new MaskedTextBox();
                thistime.Mask = "00:00";
                thistime.Name = "thistime";
                thistime.Text = buckTime;
                thistime.Size = new Size(40, 150);
                Point pt=new System.Drawing .Point();
                pt.X = 25;
                pt.Y = 40;
                thistime.Location = pt;
                this.Controls.Add(thistime);

                //建立botton
                Button saveBt = new Button();
                saveBt.Text = "SAVE";
                saveBt.Location = new Point(95, 40);
                saveBt.Click += new System.EventHandler(this.saveBt_click );
                this.Controls.Add(saveBt);    
    }
        private void saveBt_click(object sender, System.EventArgs e)
            {
                buckTime = this.thistime.Text;   <----在這兒的 thistime上出現錯誤
                SaveRegistry("Tuico","bucktime",buckTime );           
            } 
    2007年9月13日 上午 07:58

解答

  • MaskedTextBox thistime = new MaskedTextBox();

    將這行改成

    thistime = new MaskedTextBox();

    應該就可以了
    2007年9月13日 上午 08:39

所有回覆

  •  

    buckTime 是...?!

    看不到你宣告的地方

    2007年9月13日 上午 08:10
  • bucktime是讀出來附與 masktextbox(thistime)的值,
    這個控件產生的部份是沒有問題的
    其實原本只是
    private void saveBt_click(object sender, System.EventArgs e)
            {             
                SaveRegistry("Tuico","bucktime",thistime.Text);          
    <----在這兒的 thistime上出現錯誤
            } 

    加上
    buckTime = this.thistime.Text;
    只是自己再確認一下出錯在那兒
    2007年9月13日 上午 08:13
  • MaskedTextBox thistime = new MaskedTextBox();

    將這行改成

    thistime = new MaskedTextBox();

    應該就可以了
    2007年9月13日 上午 08:39
  • 感謝你的回覆
    真沒想到小地方會有那麼大的學問

    小弟剛剛也剛好試著在使用MaskedTextBox thistime = new MaskedTextBox(); 的時候

     buckTime = this.Controls["thistime"].Text;
    也可以抓的到,但總是沒有改成 thistime = new MaskedTextBox(); 時,來的好
    謝謝喔
    2007年9月13日 上午 08:44
  • 歐歐..受教了

    剛試了一下..其實我覺的樓主的寫法也不錯..

    因為樓主的寫法可把物件宣告放到區域變數中

     

    但若是用thistime = new MaskedTextBox();

    則必須要在全域宣告..MaskedTextBox thistime ;

    2007年9月13日 上午 08:52
  • 不好意思,我也正在為動態產生的控制項的取值問題煩惱,看到這篇文章,試了一下,但有個疑問
    您的最佳解答是將 MaskedTextBox thistime = new MaskedTextBox() 改為 thistime = new MaskedTextBox(),
    這樣子visual studio不就不認識thistime是什麼型態了嗎? 那為什麼還可以取得到 Mask、Name...這幾個屬性?
    因為我試不出來,所以就只好留言給您!希望您可以幫我解答一下,謝謝。

    2009年8月27日 上午 09:38
  • 小餅:
       你的上一篇,蹂躪大寫的不就是你要的答案嗎 ?
    請關心自己的問題,不要問了就放空;這是對別人與自己的尊重。如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    2009年8月27日 上午 09:50
    版主