Code Snippet
public partial class CustomToolstripButton : ToolStripButton, IButtonControl
{
public CustomToolstripButton()
:
base()
{
base.Click += new EventHandler(CustomToolstripButton_Click);
}
void CustomToolstripButton_Click(object sender, EventArgs e)
{
MessageBox.Show("CustomToolstripButton_Click");
OnClick(
EventArgs.Empty);
}
#region
IButtonControl Members
private DialogResult dialogResult;
DialogResult IButtonControl.DialogResult
{
get
{
return this.dialogResult;
}
set
{
if (!IsEnumValid(value, (int)value, 0, 7))
{
throw new InvalidEnumArgumentException("value", (int)value, typeof(DialogResult));
}
this.dialogResult = value;
}
}
public static bool IsEnumValid(Enum enumValue, int value, int minValue, int maxValue)
{
return ((value >= minValue) && (value <= maxValue));
}
void IButtonControl.NotifyDefault(bool value) { }
void IButtonControl.PerformClick()
{
MessageBox.Show("IButtonControl.PerformClick()");
OnClick(new EventArgs());
}
protected override void OnClick(EventArgs e)
{
MessageBox.Show("OnClick");
Form form = FindFormInternal();
if (form != null)
{
form.DialogResult = this.dialogResult;
}
base.OnClick(EventArgs.Empty);
}
internal Form FindFormInternal()
{
Control parentInternal = this.Owner as Control;
while ((parentInternal != null) && !(parentInternal is Form))
{
parentInternal = parentInternal.Parent;
}
return (Form)parentInternal;
}
#endregion
}