ToolStripコントロール−継承して拡張する
ToolStripControlHost を継承してプロパティや動作を拡張するサンプルです。
ToolStripItemDesignerAvailability 属性で継承したクラスがデザイナで表示されるかを指定します。
メンバ名 | 説明 |
---|---|
All | すべてのコントロールを表示するよう指定します。 |
ContextMenuStrip | |
MenuStrip | |
None | コントロールを表示しないよう指定します。 |
StatusStrip | |
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);
}
}