Visual C# を使用して UserControl オブジェクトをコントロール コンテナーのデザイン時として機能させる
この記事では、UserControl オブジェクトを Windows フォームに追加した後、UserControl オブジェクトをデザイン時にコントロール コンテナーとして機能させる方法について説明します。
元の製品バージョン: Visual C#
元の KB 番号: 813450
概要
この記事では、Microsoft .NET Framework クラス ライブラリ名前空間 を参照しますSystem.ComponentModel
。
この詳細な記事では、UserControl オブジェクトを Windows フォームに配置した後、デザイン時に UserControl オブジェクトをコントロール コンテナーとして機能させる方法について説明します。 コントロールを UserControl にドラッグする場合があります。 これを行うには、UserControl がコントロール コンテナーとして機能する必要があります。
既定では、UserControl オブジェクトは、コントロールを作成するときにのみコントロール コンテナーとして機能できます。 UserControl を Windows フォームに配置した後で UserControl ホストを構成要素コントロールにするには、UserControl の既定のデザイナーを変更する必要があります。 コンポーネントのデザイン時サービスを実装するには、名前空間の クラスを DesignerAttribute
使用します System.ComponentModel
。 は DesignerAttribute
、クラス宣言の前に来ます。 と パラメーターをDesignerAttribute
designerTypeName
渡して をdesignerBaseType
初期化します。
designerTypeName
は、デザイン時サービスを提供するデザイナーの種類の完全修飾名です。 パラメーターの と のSystem.Design
designerTypeName
組み合わせをSystem.Windows.Forms.Design.ParentControlDesigner
渡します。 クラスは ParentControlDesigner
、UserControl のデザイン時の動作を拡張します。
designerBaseType
は、デザイナーの基底クラスの名前です。 デザイン時サービスに使用されるクラスは、IDesigner インターフェイスを実装する必要があります。
UserControl をデザイン時コントロール コンテナーとして作成する
新しい Visual C# Windows コントロール ライブラリ プロジェクトを作成します。 これを行うには、次の手順を実行します。
- Visual Studio を起動します。
- [ ファイル] メニューの [ 新規] をポイントし、[ プロジェクト] をクリックします。
- [プロジェクトの種類] で[Visual C#] をクリックし、[テンプレート] の下の [コントロール ライブラリWindows フォームクリックします。
プロジェクトに ContainerUserControl という名前を付けます。 既定では、 UserControl1.cs が作成されます。
ソリューション エクスプローラーで、[UserControl1.cs] を右クリックし、[コードの表示] をクリックします。
宣言セクションに次のコードを追加します。
using System.ComponentModel.Design;
System.ComponentModel.DesignerAttribute
次のように、 属性をコントロールに適用します。[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] public class UserControl1 : System.Windows.Forms.UserControl { ... }
[ ビルド] メニューで、[ ソリューションのビルド] をクリックします。
UserControl をテストする
新しい Visual C# プロジェクトを作成します。 これを行うには、次の手順を実行します。
- Visual Studio を起動します。
- [ ファイル] メニューの [ 新規] をポイントし、[ プロジェクト] をクリックします。
- [プロジェクトの種類] で [Visual C#] をクリックし、[テンプレート] の下にある [アプリケーションWindows フォーム] をクリックします。 既定では、 Form1.cs が作成されます。
UserControl1 コントロールをツールボックスに追加します。
- [ ツール ] メニューの [ ツールボックス項目の選択] をクリックします。
- [.NET Framework コンポーネント] タブで、[参照] をクリックします。
- [ ファイルを開く ] ボックスで、UserControl コントロールの作成時にビルドされた DLL を見つけます。
[UserControl1] をツールボックス ([Windows フォーム] の下) から [Form1.cs] にドラッグします。
ツールボックスから UserControl1 に Button コントロールをドラッグします。
注:
UserControl1 は、Button コントロールのコントロール コンテナーとして動作します。
関連情報
詳細については、「Microsoft Web サイト: ParentControlDesigner クラス」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示