Browse Source

fix SD-1920 - NumericUpDown does not work properly when typing a number

The value should be validated and saved when the control loses the focus.
pull/39/merge
Siegfried Pammer 13 years ago
parent
commit
b471c96557
  1. 60
      src/Main/ICSharpCode.SharpDevelop.Widgets/Project/NumericUpDown.cs

60
src/Main/ICSharpCode.SharpDevelop.Widgets/Project/NumericUpDown.cs

@ -213,41 +213,53 @@ namespace ICSharpCode.SharpDevelop.Widgets @@ -213,41 +213,53 @@ namespace ICSharpCode.SharpDevelop.Widgets
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (e.Key == Key.Enter) {
double result;
if (double.TryParse(textBox.Text, out result)) {
SetValue(result);
}
else {
Print();
}
switch (e.Key) {
case Key.Enter:
SetInputValue();
textBox.SelectAll();
e.Handled = true;
}
else if (e.Key == Key.Up) {
break;
case Key.Up:
SmallUp();
e.Handled = true;
}
else if (e.Key == Key.Down) {
break;
case Key.Down:
SmallDown();
e.Handled = true;
}
else if (e.Key == Key.PageUp) {
break;
case Key.PageUp:
LargeUp();
e.Handled = true;
}
else if (e.Key == Key.PageDown) {
break;
case Key.PageDown:
LargeDown();
e.Handled = true;
break;
// case Key.Home:
// Maximize();
// e.Handled = true;
// break;
// case Key.End:
// Minimize();
// e.Handled = true;
// break;
}
//else if (e.Key == Key.Home) {
// Maximize();
// e.Handled = true;
//}
//else if (e.Key == Key.End) {
// Minimize();
// e.Handled = true;
//}
}
void SetInputValue()
{
double result;
if (double.TryParse(textBox.Text, out result)) {
SetValue(result);
} else {
Print();
}
}
protected override void OnLostFocus(RoutedEventArgs e)
{
base.OnLostFocus(e);
SetInputValue();
}
//protected override void OnMouseWheel(MouseWheelEventArgs e)

Loading…
Cancel
Save