えムナウのプログラミングのページ

えムナウ の とどけもの

 Logo えムナウBlog@AILight
えムナウBlog@Wankuma

目次

利用状況

イメージ ギャラリー

カテゴリ

Links
 

inetaj

MSMVPロゴ
MSMVP Visual C# 2005/01-2007/12

ToolStripコントロール−継承して拡張する


ToolStripControlHost を継承してプロパティや動作を拡張するサンプルです。

ToolStripItemDesignerAvailability 属性で継承したクラスがデザイナで表示されるかを指定します。

メンバ名 説明
All すべてのコントロールを表示するよう指定します。 
ContextMenuStrip ContextMenuStrip を表示するよう指定します。 
MenuStrip MenuStrip を表示するよう指定します。 
None コントロールを表示しないよう指定します。 
StatusStrip StatusStrip を表示するよう指定します。 
ToolStrip ToolStrip を表示するよう指定します。 


今回は、Windows Forms のための検証コントロール で作成した検証プロパティを実装しています。


[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip)]
public class ValidationToolStripTextBox : ToolStripControlHost
{

	public ValidationToolStripTextBox() : base(CreateControlInstance())
	{
		_validation = new ValidationProperty();
	}

	private static Control CreateControlInstance()
	{
		return new TextBox();
	}

	private TextBox TextBox
	{
		get { return Control as TextBox; }
	}

	private ValidationProperty _validation;

	[Category("Validation"), Description("検証プロパティを取得または設定します。")]
	[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
	public ValidationProperty Validation
	{
		get { return _validation; }
		set { _validation = value; }
	}

	protected override void OnValidating(CancelEventArgs e)
	{
		if (_validation.DoValidating(this.TextBox, this.TextBox.Text))
		{
			e.Cancel = true;
			return;
		}
		e.Cancel = false;

		base.OnValidating(e);
	}
}