none
請描述 Form 和 Dialog的關係? RRS feed

  • 問題

  •  

    hi 各位達人好

     

    在開發Windows Application時,請問 新增一個 Form 和 Dialog 的時機 及 其差異?

     

    因發現Form1呼叫另一個Form2後,關掉Form2,再開Form2,其中的控制項的值會仍然維持前一個輸入值

    DialogBox則無此情形,

     

    所以請各位解惑,謝謝您!!

    2008年5月8日 上午 01:58

解答

  • Hi,

    之前看崁入式開發那邊有回,這邊再貼一次,請參考下面相關說明

     

    要特別注意的一點,當用ShowDialog的方式去呼叫表單出來的時候,要自行在關閉Form的相關事件中呼叫Diapose,節錄部分說明如下

    Code Snippet

     

    當表單顯示為強制回應對話方塊時,按一下 [關閉] 按鈕 (表單右上角帶有 X 的按鈕) 會將表單隱藏起來,並將 DialogResult 屬性設定為 DialogResult.Cancel。不像非強制回應表單,當使用者按一下對話方塊的關閉表單按鈕或設定 DialogResult 屬性值時,.NET Framework 不會呼叫 Close 方法。反而表單會隱藏並可再次顯示,不需建立對話方塊的新執行個體。因為顯示為對話方塊的表單未關閉,當應用程式不再需要表單時,您必須呼叫表單的 Dispose 方法。

     

     

    所以說,如果說Form2上面有一個TextBox,我用ShowDialog的方式把Form叫出來並且在TextBox上面打些字,關閉的時候如果沒有自行處理Dispose的部分,那麼第二次把Form呼叫出來的時候,會看到上次在TextBox中輸入的字。

     

    2008年5月8日 上午 02:08
    版主

所有回覆

  • 你的關掉,是用 Form.Close() 還是 Form.Hide() ?

    如果是 Form.Close(),控制項的值應該會被清除掉,如果是 Form.Hide(),那控制項的值仍會保留。

     

    另外,在 Windows Forms 中,Form 和 Dialog 是同一種東西,只是 Dialog 是因應特別條件而設計(例如選項設定,訊息通知或是步驟引導等),而 Form 則是一般化視窗。

     

    2008年5月8日 上午 02:06
    版主
  • Hi,

    之前看崁入式開發那邊有回,這邊再貼一次,請參考下面相關說明

     

    要特別注意的一點,當用ShowDialog的方式去呼叫表單出來的時候,要自行在關閉Form的相關事件中呼叫Diapose,節錄部分說明如下

    Code Snippet

     

    當表單顯示為強制回應對話方塊時,按一下 [關閉] 按鈕 (表單右上角帶有 X 的按鈕) 會將表單隱藏起來,並將 DialogResult 屬性設定為 DialogResult.Cancel。不像非強制回應表單,當使用者按一下對話方塊的關閉表單按鈕或設定 DialogResult 屬性值時,.NET Framework 不會呼叫 Close 方法。反而表單會隱藏並可再次顯示,不需建立對話方塊的新執行個體。因為顯示為對話方塊的表單未關閉,當應用程式不再需要表單時,您必須呼叫表單的 Dispose 方法。

     

     

    所以說,如果說Form2上面有一個TextBox,我用ShowDialog的方式把Form叫出來並且在TextBox上面打些字,關閉的時候如果沒有自行處理Dispose的部分,那麼第二次把Form呼叫出來的時候,會看到上次在TextBox中輸入的字。

     

    2008年5月8日 上午 02:08
    版主
  • 不知道你程式碼怎樣寫的,若是用 Form.Close 的標準關閉法的話,Form 才會重置,反而是 Dialog 會保留,是你寫反還是?

     

    2008年5月8日 下午 05:25
    版主