我有一個在設計器中導致異常的功能。如果設計者加載它,我可以避免調用該函數嗎?有沒有比嘗試抓住更好的屬性?c#隱藏設計器的功能
一些更多的細節: 我的意思是視覺工作室設計師的勝利形式。我的表單正在使用初始化時調用LoadProject()的signleton。現在我想避免設計者調用LoadProject()函數。
我有一個在設計器中導致異常的功能。如果設計者加載它,我可以避免調用該函數嗎?有沒有比嘗試抓住更好的屬性?c#隱藏設計器的功能
一些更多的細節: 我的意思是視覺工作室設計師的勝利形式。我的表單正在使用初始化時調用LoadProject()的signleton。現在我想避免設計者調用LoadProject()函數。
有檢測你是否是在設計模式的幾種方法:
Application.ExecutablePath.ToLower().IndexOf("devenv.exe")
的devenv.exe
。如果是,則該控件將由Visual Studio實例化。有點可怕,但它有效。LicenseManager.UsageMode
爲值LicenseUsageMode.Designtime
(有關更多詳細信息,請參閱my answer至Detecting design mode from a Control’s constructor)。請注意,這可以在構造函數中工作。在任何這些檢查中包裝對您的函數的調用應該可以解決您的問題。
假設這是WinForms - 您可以檢查您是否正在使用DesignMode,並且只是立即返回您的函數。
有一些複雜性,完全解釋in this article包括一個解決方案。
你可以嘗試尋找this article on the MSDN有關使用的designMode財產。這可能會幫助你。您可以將引發異常的代碼封裝在條件中,以避免設計時出現代碼。
請注意,這將不能在構造函數中工作,因爲設計師必須實例化對象,然後設置屬性。
哪位設計師 - Windows窗體設計師?設計師要求哪種方法/功能? – 2009-08-25 17:41:27
請詳細說明。 – 2009-08-25 17:45:10
同意。如果您提出的問題既詳細又具體,我會給你一個+1抵消。 – 2009-08-25 17:47:41