none
並未將物件參考設定為物件的執行個體 RRS feed

  • 問題

  • 昨天剛解決了跨執行緒存取UI的問題,但是今天執行就出現問題@@
    private delegate void InvokeSetEnable(PictureBox b, Boolean enable);
    private void setEnable(PictureBox b, Boolean enable)
    {
                if (this.InvokeRequired)
                {
                    this.Invoke(
                      new InvokeSetEnable(this.setEnable), new object[] { b, enable }//錯誤訊息於此區間:並未將物件參考設定為物件的執行個體
                    );
                }
                else
                {
                    b.Enabled = enable;
                }
    }
    想不通為什麼,有人可以解惑嗎?

    2009年12月15日 下午 01:50

解答

  • 這要看你是怎麼呼叫setEnable Method ?
    看起來問題是出在 參數 PictureBox b .

    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年12月15日 下午 02:15
    版主

所有回覆

  • 這要看你是怎麼呼叫setEnable Method ?
    看起來問題是出在 參數 PictureBox b .

    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年12月15日 下午 02:15
    版主
  • PictureBox都是在Form_Load階段new得的,呼叫方式都是setEnable(PictureBox,true)這樣
    且我有另一個
    private delegate void InvokeSetVisible(PictureBox b, Boolean vision);
    private void change(PictureBox b, Boolean vision)//visible
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(
                      new InvokeSetVisible(this.change), new object[] { b, vision }
                    );
                }
                else
                {
                    b.Visible = vision;
                }
            }
    這部份執行卻很正常。
    訊息顯示參數PictureBox=null,但同一個picturebox可傳至change()卻不能傳至setEnable嗎
    2009年12月15日 下午 02:29
  • 恩...我發現問題了,我的存檔內容有部分被吃掉或是變回原本內容,所以傳入setEnable 的內容有問題
    總之還是謝謝^^
    2009年12月15日 下午 03:42