none
繼承後的問題 RRS feed

  • 問題

  • 請教一下Windows form 的問題

    表單繼承後,繼承的表單若開啟編輯

    會先執行父表單的事件

    是否可以避免在編輯時期讓他去執行

    舉例來說:

    在父表單的load建構式內

    MessageBox.Show("HI");

    將所有開啟的表單都先關閉

    然後點開父表單

    是沒問題的

    但當點開繼承的表單

    就會顯示 HI

    也就是說,非執行狀態繼承者編輯時父表單的事件都會被執行一次

    是否能禁止


    • 已編輯 Lin_even 2018年7月12日 上午 11:14
    2018年7月12日 上午 10:15

解答

  •    private  void Form2_Load(object sender, EventArgs e)
            {
                if (!DesignMode)
                {
                    MessageBox.Show("Test");
                }
            }

    記得寫完後要先 "重建方案" 比較保險。

    提供另一個想法,其實我挺不喜歡把一個 Form 加了一堆東西後成為其他 Form 的父類別。因為這樣很容易讓你的Form 的繼承鏈變得太長, 並且耦合度太高,因為繼承是絕對性的強耦合。建議還是使用 "組合/聚合 替代 繼承" 會是比較好的做法。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/



    2018年7月12日 下午 06:49
    版主

所有回覆

  • 覆寫 父表單的 load 呢?

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年7月12日 下午 03:28
  •    private  void Form2_Load(object sender, EventArgs e)
            {
                if (!DesignMode)
                {
                    MessageBox.Show("Test");
                }
            }

    記得寫完後要先 "重建方案" 比較保險。

    提供另一個想法,其實我挺不喜歡把一個 Form 加了一堆東西後成為其他 Form 的父類別。因為這樣很容易讓你的Form 的繼承鏈變得太長, 並且耦合度太高,因為繼承是絕對性的強耦合。建議還是使用 "組合/聚合 替代 繼承" 會是比較好的做法。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/



    2018年7月12日 下午 06:49
    版主