none
自訂元件(UserControl)如何在設計階段得知自己被移除了? RRS feed

  • 問題

  • 各位先進大家好

    我的問題是我自訂了一個元件

    元件中有委派繪圖的動作給父層容器

    在設計階段該元件被移除

    所委派的繪圖動作卻不會被解除

    想知道在設計階段元件如何得知自己被移除了

    好讓元件解除其所委派的繪圖動作

    2016年4月7日 上午 11:28

解答

  • 很幸運誤打誤撞中找到了解答

    在執行階段元件的移除時機是解構( UserControl.cs中的 ~UserControl() )

    但在設計階段則是資源釋放( UserControl_Designer.cs中的 Dispose(bool disposing) )

    分享給有類似需求的人~

    2016年4月9日 下午 02:49

所有回覆

  • 一編譯就會錯了吧 , 錯了就看錯誤訊息手動移除.

    (如果要實現這功能, 只能找找有沒有人為這個寫 Visual Studio Extension 了) 


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

    2016年4月8日 上午 12:43
    版主
  • 編譯的時候不會錯唷

    委派的繪圖功能主要是在設計階段使用

    像是繪製流程圖的線段

    但流程格移除後線段仍在.....

    我再往Extension的方向努力看看

    非常感謝您的幫助


    2016年4月8日 上午 04:50
  • 編譯如果不會錯, 那委派行為(像是 Button1.Click += Button1_Click) 就拿掉了, 我想是因為你是用工具箱拉元件而不是手寫程式碼加進去, 所以你從設計畫面移除, 委派行為也會跟著被拿掉, 只是剩下該方法而已是吧.

    所以你的目的就是要移除這些已經沒有被參考到的方法囉 ?

    聽說這兩個辦得到

    http://www.ndepend.com/

    https://www.jetbrains.com/resharper/


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

    2016年4月8日 上午 10:20
    版主
  • 確實如您所說在編譯時因元件早已移除

    其委派行為也已不存在  所以並沒有編譯錯誤的問題

    我的目的主要是提供元件在設計階段時

    能夠繪製彼此的順序關係

    (簡單來說就是提供設計階段可編輯的流程圖)

    藉由委派父層容器

    我已經達成繪製箭頭的工作

    但如果將流程格移除

    由於委派未解除

    所以箭頭仍會繼續存在

    我希望能找到移除元件觸發時機來自行解除委派

    有嘗試過解構子

    但貌似元件在設計階段的移除並不涉及解構行為...

    目前還在努力中 很感謝您的幫忙~

    2016年4月8日 下午 02:42
  • 很幸運誤打誤撞中找到了解答

    在執行階段元件的移除時機是解構( UserControl.cs中的 ~UserControl() )

    但在設計階段則是資源釋放( UserControl_Designer.cs中的 Dispose(bool disposing) )

    分享給有類似需求的人~

    2016年4月9日 下午 02:49