次の方法で共有


チュートリアル: デザイン時にカスタム Windows フォーム コントロールをデバッグする

カスタム コントロールを作成すると、多くの場合、デザイン時の動作をデバッグする必要があります。 これは、カスタム コントロールのカスタム デザイナーを作成する場合に特に当てはまります。 詳細については、「 チュートリアル: Visual Studio の Design-Time 機能を利用する Windows フォーム コントロールの作成」を参照してください。

他の .NET Framework クラスをデバッグする場合と同様に、Visual Studio を使用してカスタム コントロールをデバッグできます。 違いは、カスタム コントロールのコードを実行している Visual Studio の別のインスタンスをデバッグすることです。

重要

この記事は主に、.NET Framework を使用した Windows フォーム用の従来の In-Process デザイナーを対象としています。 プロシージャは、.NET (.NET Framework ではなく) を対象とするプロジェクトと直接適用できないか、完全に互換性がない場合があります。

.NET Framework プロジェクトの場合、プラットフォーム ターゲット設定 Any または x64 でコンパイルできるプロジェクトのみが、デザイナーで完全にサポートされます。 ActiveX、COM、またはその他の 32 ビット コンポーネントを使用するプロジェクトでは、互換性の問題が発生する可能性があります。 現在プレビュー段階にある Out-Of_Process Framework Designer では、これらの互換性の問題の多くに対処しています。 ただし、デザイン時の機能は、64 ビット In-Process デザイナーと同様に機能しない場合があります。 Out-Of-Process Framework デザイナーを有効にするには、 Tools>Options>Environment>Preview Features に移動します。

Out-Of-Process デザイナーの詳細については、「 .NET Framework 以降のデザイナーの変更」を参照してください。

プロジェクトを作成する

最初の手順では、アプリケーション プロジェクトを作成します。 このプロジェクトを使用して、カスタム コントロールをホストするアプリケーションをビルドします。

Visual Studio で Windows アプリケーション プロジェクトを作成し、 DebuggingExample という名前を付けます

コントロール ライブラリ プロジェクトを作成する

  1. Windows コントロール ライブラリ プロジェクトをソリューションに追加します。

  2. 新しい UserControl 項目を DebugControlLibrary プロジェクトに追加します。 DebugControl という名前を 付けます

  3. ソリューション エクスプローラーで、基本名 UserControl1 のコード ファイルを削除して、プロジェクトの既定のコントロールを削除します。

  4. ソリューションをビルドします。

チェックポイント

この時点で、 ツールボックスにカスタム コントロールを表示できるようになります。

進行状況を確認するには、 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. "DebuggingExample" プロジェクトで、 Windows フォーム デザイナーで Form1 を開きます。

  2. ツールボックスで、[DebugControlLibrary コンポーネント] タブを開き、DebugControl インスタンスをフォームにドラッグします。

  3. DemoString] ウィンドウで、カスタム プロパティを見つけます。 その値は、他のプロパティと同様に変更できます。 また、 DemoString プロパティを選択すると、プロパティの説明文字列が [プロパティ ] ウィンドウの下部に表示されることにも注意してください。

デザイン時デバッグ用にプロジェクトを設定する

カスタム コントロールのデザイン時の動作をデバッグするには、カスタム コントロールのコードを実行している Visual Studio の別のインスタンスをデバッグします。

  1. ソリューション エクスプローラーDebugControlLibrary プロジェクトを右クリックし、[プロパティ] を選択します。

  2. DebugControlLibrary プロパティ シートで、[デバッグ] タブを選択します。

    [ Start Action]\(開始アクション \) セクションで、[ 外部プログラムの開始] を選択します。 Visual Studio の個別のインスタンスをデバッグするため、省略記号 (Visual Studio の [プロパティ] ウィンドウの省略記号ボタン (...) ボタン) をクリックして Visual Studio IDE を参照します。 実行可能ファイルの名前は devenv.exeされ、既定の場所にインストールした場合、そのパスは \Microsoft Visual Studio\2019\<edition>\Common7\IDE%%ProgramFiles(x86) になります

  3. OK を選択してダイアログ ボックスを閉じます。

  4. DebugControlLibrary プロジェクトを右クリックし、[スタートアップ プロジェクトとして設定] を選択して、このデバッグ構成を有効にします。

デザイン時にカスタム コントロールをデバッグする

これで、デザイン モードで実行されるカスタム コントロールをデバッグする準備ができました。 デバッグ セッションを開始すると、Visual Studio の新しいインスタンスが作成され、それを使用して "DebuggingExample" ソリューションを読み込みます。 フォーム デザイナーで Form1 を開くと、カスタム コントロールのインスタンスが作成され、実行が開始されます。

  1. コード エディターDebugControl ソース ファイルを開き、Set プロパティのDemoString アクセサーにブレークポイントを配置します。

  2. F5 キーを押してデバッグ セッションを開始します。 Visual Studio の新しいインスタンスが作成されます。 インスタンスは、次の 2 つの方法で区別できます。

    • デバッグ インスタンスのタイトル バーに "実行中 " という単語があります

    • デバッグ インスタンスのデバッグ ツール バーの [スタート] ボタンが無効になっている

    ブレークポイントはデバッグ インスタンスで設定されます。

  3. Visual Studio の新しいインスタンスで、"DebuggingExample" ソリューションを開きます。 [ファイル] メニューから [最近使ったプロジェクト] を選択すると、ソリューションを簡単に見つけることができます。 "DebuggingExample.sln" ソリューション ファイルは、最近使用したファイルとして一覧表示されます。

    重要

    .NET 6 以降の Windows フォーム プロジェクトをデバッグする場合は、プロジェクトを読み込まずに、Visual Studio のこのインスタンスを使用して、 デバッガーをDesignToolsServer.exe プロセスにアタッチします。 デバッグ>プロセスにアタッチ メニュー項目を選択します。 プロセス 一覧でDesignToolsServer.exeを見つけて、[ アタッチ] を押します。 詳細については、「 .NET Framework 以降のデザイナーの変更」を参照してください。

  4. フォーム デザイナーで Form1 を開き、DebugControl コントロールを選択します。

  5. DemoString プロパティの値を変更します。 変更をコミットすると、Visual Studio のデバッグ インスタンスがフォーカスを取得し、ブレークポイントで実行が停止します。 他のコードと同様に、プロパティ アクセサーを 1 ステップで実行できます。

  6. デバッグを停止するには、Visual Studio のホストされているインスタンスを終了するか、デバッグ インスタンスの [ デバッグの停止 ] ボタンを選択します。

次のステップ

デザイン時にカスタム コントロールをデバッグできるようになったので、Visual Studio IDE とのコントロールの対話を拡張する可能性が多数あります。

  • DesignMode クラスの Component プロパティを使用して、デザイン時にのみ実行されるコードを記述できます。 詳細については、DesignModeを参照してください。

  • カスタム コントロールとデザイナーの相互作用を操作するために、コントロールのプロパティに適用できる属性がいくつかあります。 これらの属性は、 System.ComponentModel 名前空間にあります。

  • カスタム コントロールのカスタム デザイナーを作成できます。 これにより、Visual Studio によって公開される拡張可能なデザイナー インフラストラクチャを使用して、設計エクスペリエンスを完全に制御できます。 詳細については、「 チュートリアル: Visual Studio の Design-Time 機能を利用する Windows フォーム コントロールの作成」を参照してください。

こちらも参照ください