switch (key_data & Keys.KeyCode) {
case Keys.Enter:
return true;
+ case Keys.Escape:
+ return true;
}
}
return base.IsInputKey (key_data);
protected override void OnKeyDown (KeyEventArgs e)
{
- if (e.KeyCode == Keys.Return && Visible) {
- this.Visible = false;
- OnEditingFinished (e);
+ if (!Visible)
+ return;
+
+ switch (e.KeyCode) {
+ case Keys.Return:
+ Visible = false;
+ Parent.Focus ();
+ e.Handled = true;
+ OnEditingFinished (e);
+ break;
+ case Keys.Escape:
+ Visible = false;
+ Parent.Focus ();
+ e.Handled = true;
+ OnEditingCancelled (e);
+ break;
}
}
}
}
+ protected void OnEditingCancelled (EventArgs e)
+ {
+ EventHandler eh = (EventHandler)(Events[EditingCancelledEvent]);
+ if (eh != null)
+ eh (this, e);
+ }
+
protected void OnEditingFinished (EventArgs e)
{
EventHandler eh = (EventHandler)(Events [EditingFinishedEvent]);
eh (this, e);
}
+ static object EditingCancelledEvent = new object ();
+ public event EventHandler EditingCancelled {
+ add { Events.AddHandler (EditingCancelledEvent, value); }
+ remove { Events.RemoveHandler (EditingCancelledEvent, value); }
+ }
+
static object EditingFinishedEvent = new object ();
public event EventHandler EditingFinished {
add { Events.AddHandler (EditingFinishedEvent, value); }