このドキュメントはアーカイブされており、メンテナンスされていません。

ToolStripControlHost クラス

更新 : 2007 年 11 月

カスタム コントロールまたは Windows フォーム コントロールをホストします。

名前空間 :  System.Windows.Forms
アセンブリ :  System.Windows.Forms (System.Windows.Forms.dll 内)

public class ToolStripControlHost : ToolStripItem
public class ToolStripControlHost extends ToolStripItem
public class ToolStripControlHost extends ToolStripItem

ToolStripControlHost は、ToolStripComboBoxToolStripTextBox、および ToolStripProgressBar の抽象基本クラスです。ToolStripControlHost は、カスタム コントロールを含む他のコントロールを次の 2 つの方法でホストできます。

  • Control から派生するクラスを使用して ToolStripControlHost を構築します。ホストされるコントロールおよびプロパティに完全にアクセスするには、Control プロパティをキャストして、このプロパティが表す実際のクラスに戻す必要があります。

  • ToolStripControlHost を拡張し、継承クラスの既定のコンストラクタ内で、Control から派生したクラスを渡す基本クラス コンストラクタを呼び出します。このオプションを使用すると、一般的なコントロール メソッドとプロパティは、ToolStrip 内でのアクセスが簡単になるようにラップできます。

ToolStripControlHost クラスを使用すると、カスタマイズしたコントロール、またはその他の Windows フォーム コントロールをホストできます。

ToolStripItem をカスタマイズするには、ToolStripControlHost からクラスを派生させて、カスタムの実装を作成します。OnSubscribeControlEvents などのメソッドをオーバーライドすることにより、ホストされるコントロールが発生させるイベントを処理できます。また、カスタムの機能をプロパティに追加することにより、ホストされるコントロールを拡張できます。

MonthCalendar コントロールを持つ ToolStripControlHost を構築し、OnSubscribeControlEvents を使用してイベントを処理し、メンバの一部を ToolStripControlHost に公開するコード例を次に示します。

	//Declare a class that inherits from ToolStripControlHost.
	public class ToolStripMonthCalendar : ToolStripControlHost
	{
		// Call the base constructor passing in a MonthCalendar instance.
		public ToolStripMonthCalendar() : base (new MonthCalendar()) { }

		public MonthCalendar MonthCalendarControl
		{
			get
			{
				return Control as MonthCalendar;
			}
		}

		// Expose the MonthCalendar.FirstDayOfWeek as a property.
		public Day FirstDayOfWeek
		{
			get
			{
				return MonthCalendarControl.FirstDayOfWeek;
			}
			set { value = MonthCalendarControl.FirstDayOfWeek; }
		}

		// Expose the AddBoldedDate method.
		public void AddBoldedDate(DateTime dateToBold)
		{
			MonthCalendarControl.AddBoldedDate(dateToBold);
		}

		// Subscribe and unsubscribe the control events you wish to expose.
		protected override void OnSubscribeControlEvents(Control c)
		{
			// Call the base so the base events are connected.
			base.OnSubscribeControlEvents(c);

			// Cast the control to a MonthCalendar control.
			MonthCalendar monthCalendarControl = (MonthCalendar) c;

			// Add the event.
			monthCalendarControl.DateChanged +=
				new DateRangeEventHandler(OnDateChanged);
		}

		protected override void OnUnsubscribeControlEvents(Control c)
		{
			// Call the base method so the basic events are unsubscribed.
			base.OnUnsubscribeControlEvents(c);

			// Cast the control to a MonthCalendar control.
			MonthCalendar monthCalendarControl = (MonthCalendar) c;

			// Remove the event.
			monthCalendarControl.DateChanged -=
				new DateRangeEventHandler(OnDateChanged);
		}

		// Declare the DateChanged event.
		public event DateRangeEventHandler DateChanged;

		// Raise the DateChanged event.
		private void OnDateChanged(object sender, DateRangeEventArgs e)
		{
			if (DateChanged != null)
			{
				DateChanged(this, e);
			}
		}
	}


この型のすべてのパブリック static (Visual Basic では Shared) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0、2.0
表示: