逐步解說:在設計階段偵錯自訂 Windows Forms 控制項
當您建立自訂控制項時,通常會發現必須偵錯其設計階段行為。 如果您要為自訂控制項撰寫自訂設計工具,這特別如此。 如需詳細資訊,請參閱 逐步解說:建立利用 Visual Studio 設計階段功能的 Windows Forms 控制項。
您可以使用 Visual Studio 對自訂控制項進行偵錯,就像偵錯任何其他 .NET Framework 類別一樣。 差別在於,您將針對執行自訂控制項程式碼的 Visual Studio 個別實例進行偵錯。
重要
本文主要適用于使用 .NET Framework 的 Windows Forms 傳統同進程設計工具。 程式可能不適用於或完全相容于以 .NET 為目標的專案(而非 .NET Framework)。
對於 .NET Framework 專案,只有可以使用平臺目標設定 進行編譯的專案,設計工具中完全支援任何 或 x64 。 使用 ActiveX、COM 或其他 32 位元件的專案可能會有相容性問題。 目前處於預覽狀態的 Out-Of_Process Framework Designer 解決了許多相容性問題。 不過,設計階段功能可能無法運作,以及 64 位同進程設計工具。 若要啟用跨進程架構設計工具,請流覽至 [工具 > 選項 > 環境 > 預覽功能]。
如需跨進程設計工具的詳細資訊,請參閱 設計工具自 .NET Framework 以來的變更。
建立專案
第一個步驟是建立應用程式專案。 您將使用此專案來建置裝載自訂控制項的應用程式。
在 Visual Studio 中,建立 Windows 應用程式專案,並將其命名為 DebuggingExample 。
建立控制項程式庫專案
將 Windows 控制項程式庫 專案新增至方案。
將新的 UserControl 專案新增至 DebugControlLibrary 專案。 將其命名為 DebugControl 。
在 方案總管 中,刪除具有 UserControl1 基底名稱的程式碼檔案,以刪除專案的預設控制項。
建置方案。
Checkpoint
此時,您將能夠在 [工具箱 ] 中看到 您的自訂控制項。
若要檢查進度,請尋找名為 DebugControlLibrary 元件 的新索引標籤,然後按一下以選取它。 當它開啟時,您會看到控制項列為 DebugControl ,旁邊有預設圖示。
將屬性新增至自訂控制項
為了示範自訂控制項的程式碼是在設計階段執行,您將新增 屬性,並在實作 屬性的程式碼中設定中斷點。
在程式碼編輯器 中 開啟 DebugControl 。 將下列程式碼新增至類別定義:
Private demoStringValue As String = Nothing <BrowsableAttribute(true)> Public Property DemoString() As String Get Return Me.demoStringValue End Get Set(ByVal value As String) Me.demoStringValue = value End Set End Property
private string demoStringValue = null; [Browsable(true)] public string DemoString { get { return this.demoStringValue; } set { demoStringValue = value; } }
建置方案。
將自訂控制項新增至主表單
若要對自訂控制項的設計階段行為進行偵錯,您會將自訂控制項類別的實例放在主表單上。
在 [偵錯][範例] 專案中,開啟 Windows Forms 設計工具 中的 Form1。
在 [工具箱 ] 中 ,開啟 [ DebugControlLibrary 元件 ] 索引標籤,然後將 DebugControl 實例拖曳 到表單上。
在 [
DemoString
屬性 ] 視窗中尋找自訂屬性。 請注意,您可以變更其值,就像任何其他屬性一樣。 另請注意,選取屬性時DemoString
,屬性的描述字串會出現在 [屬性 ] 視窗底部 。
設定專案以進行設計階段偵錯
若要偵錯自訂控制項的設計階段行為,您將偵錯執行自訂控制項程式碼的 Visual Studio 個別實例。
以滑鼠右鍵按一下 方案總管 中的 DebugControlLibrary 專案,然後選取 [ 屬性 ]。
在 DebugControlLibrary 屬性工作表中,選取 [ 偵錯] 索引標籤。
在 [ 啟動動作] 區段中,選取 [ 啟動外部程式 ]。 您將偵錯個別的 Visual Studio 實例,因此按一下省略號 ( ) 按鈕以流覽 Visual Studio IDE。 可執行檔的名稱為 devenv.exe ,如果您安裝到預設位置,其路徑為 %ProgramFiles(x86)%\Microsoft Visual Studio\2019\ < edition > \Common7\IDE 。
選取 [確定] 關閉對話方塊。
以 滑鼠右鍵按一下 DebugControlLibrary 專案,然後選取 [ 設定為啟始專案 ] 以啟用此偵錯組態。
在設計階段對自訂控制項進行偵錯
現在您已準備好在設計模式中執行自訂控制項時進行偵錯。 當您啟動偵錯會話時,將會建立新的 Visual Studio 實例,並使用該實例來載入 「DebuggingExample」 解決方案。 當您在 表單設計工具 中開啟 Form1 時,將會建立自訂控制項的實例,並開始執行。
在程式 代碼編輯器 中 開啟 DebugControl 原始程式檔,並在 屬性的
DemoString
存取子上Set
放置中斷點。按 F5 啟動偵錯會話。 系統會建立新的 Visual Studio 實例。 您可以透過兩種方式區分實例:
偵錯實例在其標題列中有 [執行 ] 一字
偵錯實例在其 [偵錯] 工具列上 已停用 [ 開始 ] 按鈕
您的中斷點會在偵錯實例中設定。
在 Visual Studio 的新實例中,開啟 「DebuggingExample」 解決方案。 您可以從 [檔案 ] 功能表選取 [最近使用的專案 ],輕鬆找到解決方案。 「DebuggingExample.sln」 方案檔會列為最近使用的檔案。
重要
如果您要偵錯 .NET 6 或更新版本的 Windows Forms 專案,請改為不要載入專案,請改用 Visual Studio 的這個實例將偵錯工具附加至 DesignToolsServer.exe 程式。 選取 [ > 偵錯附加至處理] 功能表項目。 在進程清單中尋找 DesignToolsServer.exe ,然後按 [ 附加 ]。 如需詳細資訊,請參閱 設計工具自 .NET Framework 以來的變更。
在表單設計工具 中 開啟 Form1,然後選取 DebugControl 控制項。
變更
DemoString
屬性的值。 當您認可變更時,Visual Studio 的偵錯實例會在中斷點取得焦點和執行停止。 您可以單一步驟執行屬性存取子,就像任何其他程式碼一樣。若要停止偵錯,請結束 Visual Studio 裝載的實例,或選取 偵錯實例中的 [停止 偵錯] 按鈕。
下一步
現在您可以在設計階段對自訂控制項進行偵錯,因此有許多可能性可以擴充控制項與 Visual Studio IDE 的互動。
您可以使用 DesignMode 類別的 Component 屬性來撰寫只會在設計階段執行的程式碼。 如需詳細資訊,請參閱DesignMode。
您可以套用至控制項屬性的數個屬性,以操作自訂控制項與設計工具的互動。 您可以在 命名空間中找到 System.ComponentModel 這些屬性。
您可以撰寫自訂控制項的自訂設計工具。 這可讓您使用 Visual Studio 所公開的可延伸設計工具基礎結構,完全控制設計體驗。 如需詳細資訊,請參閱 逐步解說:建立利用 Visual Studio 設計階段功能的 Windows Forms 控制項。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應