逐步解說:在設計階段偵錯自訂 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

建立控制項程式庫專案

  1. Windows 控制項程式庫 專案新增至方案。

  2. 將新的 UserControl 專案新增至 DebugControlLibrary 專案。 將其命名為 DebugControl

  3. 方案總管 中,刪除具有 UserControl1 基底名稱的程式碼檔案,以刪除專案的預設控制項。

  4. 建置方案。

Checkpoint

此時,您將能夠在 [工具箱 ] 中看到 您的自訂控制項。

若要檢查進度,請尋找名為 DebugControlLibrary 元件 的新索引標籤,然後按一下以選取它。 當它開啟時,您會看到控制項列為 DebugControl ,旁邊有預設圖示。

將屬性新增至自訂控制項

為了示範自訂控制項的程式碼是在設計階段執行,您將新增 屬性,並在實作 屬性的程式碼中設定中斷點。

  1. 在程式碼編輯器 開啟 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;
        }
    }
    
  2. 建置方案。

將自訂控制項新增至主表單

若要對自訂控制項的設計階段行為進行偵錯,您會將自訂控制項類別的實例放在主表單上。

  1. 在 [偵錯][範例] 專案中,開啟 Windows Forms 設計工具 中的 Form1。

  2. 在 [工具箱 ] 中 ,開啟 [ DebugControlLibrary 元件 ] 索引標籤,然後將 DebugControl 實例拖曳 到表單上。

  3. [ DemoString 屬性 ] 視窗中尋找自訂屬性。 請注意,您可以變更其值,就像任何其他屬性一樣。 另請注意,選取屬性時 DemoString ,屬性的描述字串會出現在 [屬性 ] 視窗底部

設定專案以進行設計階段偵錯

若要偵錯自訂控制項的設計階段行為,您將偵錯執行自訂控制項程式碼的 Visual Studio 個別實例。

  1. 以滑鼠右鍵按一下 方案總管 中的 DebugControlLibrary 專案,然後選取 [ 屬性 ]。

  2. 在 DebugControlLibrary 屬性工作表中,選取 [ 偵錯] 索引標籤。

    在 [ 啟動動作] 區段中,選取 [ 啟動外部程式 ]。 您將偵錯個別的 Visual Studio 實例,因此按一下省略號 ( The Ellipsis button (...) in the Properties window of Visual Studio ) 按鈕以流覽 Visual Studio IDE。 可執行檔的名稱為 devenv.exe ,如果您安裝到預設位置,其路徑為 %ProgramFiles(x86)%\Microsoft Visual Studio\2019\ < edition > \Common7\IDE

  3. 選取 [確定] 關閉對話方塊。

  4. 滑鼠右鍵按一下 DebugControlLibrary 專案,然後選取 [ 設定為啟始專案 ] 以啟用此偵錯組態。

在設計階段對自訂控制項進行偵錯

現在您已準備好在設計模式中執行自訂控制項時進行偵錯。 當您啟動偵錯會話時,將會建立新的 Visual Studio 實例,並使用該實例來載入 「DebuggingExample」 解決方案。 當您在 表單設計工具 中開啟 Form1 時,將會建立自訂控制項的實例,並開始執行。

  1. 在程式 代碼編輯器 開啟 DebugControl 原始程式檔,並在 屬性的 DemoString 存取子上 Set 放置中斷點。

  2. F5 啟動偵錯會話。 系統會建立新的 Visual Studio 實例。 您可以透過兩種方式區分實例:

    • 偵錯實例在其標題列中有 [執行 ] 一字

    • 偵錯實例在其 [偵錯] 工具列上 已停用 [ 開始 ] 按鈕

    您的中斷點會在偵錯實例中設定。

  3. 在 Visual Studio 的新實例中,開啟 「DebuggingExample」 解決方案。 您可以從 [檔案 ] 功能表選取 [最近使用的專案 ],輕鬆找到解決方案。 「DebuggingExample.sln」 方案檔會列為最近使用的檔案。

    重要

    如果您要偵錯 .NET 6 或更新版本的 Windows Forms 專案,請改為不要載入專案,請改用 Visual Studio 的這個實例將偵錯工具附加至 DesignToolsServer.exe 程式。 選取 [ > 偵錯附加至處理] 功能表項目。 在進程清單中尋找 DesignToolsServer.exe ,然後按 [ 附加 ]。 如需詳細資訊,請參閱 設計工具自 .NET Framework 以來的變更。

  4. 在表單設計工具 開啟 Form1,然後選取 DebugControl 控制項。

  5. 變更 DemoString 屬性的值。 當您認可變更時,Visual Studio 的偵錯實例會在中斷點取得焦點和執行停止。 您可以單一步驟執行屬性存取子,就像任何其他程式碼一樣。

  6. 若要停止偵錯,請結束 Visual Studio 裝載的實例,或選取 偵錯實例中的 [停止 偵錯] 按鈕。

下一步

現在您可以在設計階段對自訂控制項進行偵錯,因此有許多可能性可以擴充控制項與 Visual Studio IDE 的互動。

  • 您可以使用 DesignMode 類別的 Component 屬性來撰寫只會在設計階段執行的程式碼。 如需詳細資訊,請參閱DesignMode

  • 您可以套用至控制項屬性的數個屬性,以操作自訂控制項與設計工具的互動。 您可以在 命名空間中找到 System.ComponentModel 這些屬性。

  • 您可以撰寫自訂控制項的自訂設計工具。 這可讓您使用 Visual Studio 所公開的可延伸設計工具基礎結構,完全控制設計體驗。 如需詳細資訊,請參閱 逐步解說:建立利用 Visual Studio 設計階段功能的 Windows Forms 控制項。

另請參閱