チュートリアル: デザイン時にカスタム Windows フォーム コントロールをデバッグする
カスタム コントロールを作成すると、多くの場合、デザイン時の動作をデバッグする必要があります。 これは、カスタム コントロールのカスタム デザイナーを作成する場合に特に当てはまります。 詳細については、「チュートリアル: Visual Studio Design-Time 機能を利用する Windows フォーム コントロールの作成を参照してください。
他の .NET Framework クラスをデバッグする場合と同様に、Visual Studio を使用してカスタム コントロールをデバッグできます。 違いは、カスタム コントロールのコードを実行している Visual Studio の別のインスタンスをデバッグすることです。
大事な
この記事は主に、.NET Framework を使用した Windows フォーム用の従来の In-Process デザイナーを対象としています。 プロシージャは、.NET (.NET Framework ではなく) を対象とするプロジェクトと直接適用できないか、完全に互換性がない場合があります。
.NET Framework プロジェクトの場合、任意の または
詳細な情報については、Out-Of-Process デザイナーに関して、「.NET Framework以降のデザイナーの変更」を参照してください。
プロジェクトを作成する
最初の手順では、アプリケーション プロジェクトを作成します。 このプロジェクトを使用して、カスタム コントロールをホストするアプリケーションをビルドします。
Visual Studio で Windows アプリケーション プロジェクトを作成し、DebuggingExample
コントロール ライブラリ プロジェクトを作成する
Windows コントロール ライブラリ プロジェクトをソリューションに追加します。
新しい UserControl 項目を DebugControlLibrary プロジェクトに追加します。 DebugControlに名前を付けてください。
ソリューション エクスプローラーで、基本名 UserControl1 のコード ファイルを削除して、プロジェクトの既定のコントロールを削除します。
ソリューションをビルドします。
チェックポイント
この時点で、ツールボックスにカスタム コントロールを表示できるようになります。
進行状況を確認するには、DebugControlLibrary Components という名前の新しいタブを見つけてクリックして選択します。 開くと、コントロールは 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; } }
ソリューションをビルドします。
ホスト フォームにカスタム コントロールを追加する
カスタム コントロールのデザイン時の動作をデバッグするには、カスタム コントロール クラスのインスタンスをホスト フォームに配置します。
"DebuggingExample" プロジェクトで、Windows フォーム デザイナーで Form1 を開きます。
ツールボックスで、DebugControlLibrary コンポーネント タブを開き、DebugControl インスタンスをフォームにドラッグします。
プロパティ ウィンドウで、
DemoString
カスタム プロパティを見つけます。 その値は、他のプロパティと同様に変更できます。 また、DemoString
プロパティを選択すると、プロパティの説明文字列が Properties ウィンドウの下部に表示されることにも注意してください。
デザイン時デバッグ用にプロジェクトを設定する
カスタム コントロールのデザイン時の動作をデバッグするには、カスタム コントロールのコードを実行している Visual Studio の別のインスタンスをデバッグします。
ソリューション エクスプローラー でDebugControlLibrary プロジェクトを右クリックし、[プロパティ]選択します。 DebugControlLibrary プロパティ シートで、デバッグ タブを選択します。
[開始アクション] セクションで、[外部プログラム開始] を選択します。 Visual Studio の別のインスタンスをデバッグするため、Visual Studioの [プロパティ] ウィンドウの省略記号ボタン ([...] ボタン
) をクリックして、Visual Studio IDE を参照します。 実行可能ファイルの名前は devenv.exeで、既定の場所にインストールした場合、そのパスは %ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDEです。 [OK]
選択してダイアログ ボックスを閉じます。 DebugControlLibrary プロジェクトを右クリックし、[スタートアップ プロジェクトとして設定] を選択して、このデバッグ構成を有効にします。
デザイン時にカスタム コントロールをデバッグする
これで、デザイン モードで実行されるカスタム コントロールをデバッグする準備ができました。 デバッグ セッションを開始すると、Visual Studio の新しいインスタンスが作成され、それを使用して "DebuggingExample" ソリューションを読み込みます。 フォーム デザイナーで Form1 を開くと、カスタム コントロールのインスタンスが作成され、実行が開始されます。
コード エディター で DebugControl ソース ファイルを開き、
DemoString
プロパティのSet
アクセサーにブレークポイントを配置します。F5
押してデバッグ セッションを開始します。 Visual Studio の新しいインスタンスが作成されます。 インスタンスは、次の 2 つの方法で区別できます。 デバッグ インスタンスのタイトル バーに Running という単語があります
デバッグ インスタンスの デバッグ ツール バーの [の開始] ボタンが無効になっている
ブレークポイントはデバッグ インスタンスで設定されます。
Visual Studio の新しいインスタンスで、"DebuggingExample" ソリューションを開きます。 ソリューションを簡単に見つけるには、[
ファイル] メニューから [最近使ったプロジェクト]選択します。 "DebuggingExample.sln" ソリューション ファイルは、最近使用したファイルとして一覧表示されます。 大事な
.NET 6 以降の Windows フォーム プロジェクトをデバッグする場合は、プロジェクトを読み込まずに、Visual Studio のこのインスタンスを使用して、デバッガーを DesignToolsServer.exe プロセスにアタッチします。 デバッグ>アタッチを選択して、 メニュー項目を処理します。 プロセスの一覧で
DesignToolsServer.exe を見つけて、[アタッチ]押します。 詳細については、「.NET Framework以降のデザイナーの変更」を参照してください。 フォーム デザイナー で Form1 を開き、DebugControl コントロールを選択します。
DemoString
プロパティの値を変更します。 変更をコミットすると、Visual Studio のデバッグ インスタンスがフォーカスを取得し、ブレークポイントで実行が停止します。 他のコードと同様に、プロパティ アクセサーを 1 ステップで実行できます。デバッグを停止するには、Visual Studio のホストされているインスタンスを終了するか、デバッグ インスタンスの [デバッグの停止] ボタンを選択します。
次の手順
デザイン時にカスタム コントロールをデバッグできるようになったので、Visual Studio IDE とのコントロールの対話を拡張する可能性が多数あります。
Component クラスの DesignMode プロパティを使用して、デザイン時にのみ実行されるコードを記述できます。 詳細については、DesignModeを参照してください。
カスタム コントロールとデザイナーの相互作用を操作するために、コントロールのプロパティに適用できる属性がいくつかあります。 これらの属性は、System.ComponentModel 名前空間にあります。
カスタム コントロールのカスタム デザイナーを作成できます。 これにより、Visual Studio によって公開される拡張可能なデザイナー インフラストラクチャを使用して、設計エクスペリエンスを完全に制御できます。 詳細については、「チュートリアル: Visual Studio Design-Time 機能を利用する Windows フォーム コントロールの作成を参照してください。
関連項目
.NET Desktop feedback