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. 82
      src/Main/ICSharpCode.SharpDevelop.Widgets/Project/NumericUpDown.cs

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

@ -112,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Widgets
upDrag.Completed += drag_Completed; upDrag.Completed += drag_Completed;
downDrag.Started += drag_Started; downDrag.Started += drag_Started;
downDrag.Changed += drag_Changed; downDrag.Changed += drag_Changed;
downDrag.Completed += drag_Completed; downDrag.Completed += drag_Completed;
Print(); Print();
@ -213,41 +213,53 @@ namespace ICSharpCode.SharpDevelop.Widgets
protected override void OnPreviewKeyDown(KeyEventArgs e) protected override void OnPreviewKeyDown(KeyEventArgs e)
{ {
base.OnPreviewKeyDown(e); base.OnPreviewKeyDown(e);
if (e.Key == Key.Enter) { switch (e.Key) {
double result; case Key.Enter:
if (double.TryParse(textBox.Text, out result)) { SetInputValue();
SetValue(result); textBox.SelectAll();
} e.Handled = true;
else { break;
Print(); case Key.Up:
} SmallUp();
textBox.SelectAll(); e.Handled = true;
e.Handled = true; break;
case Key.Down:
SmallDown();
e.Handled = true;
break;
case Key.PageUp:
LargeUp();
e.Handled = true;
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.Up) { }
SmallUp();
e.Handled = true; void SetInputValue()
} {
else if (e.Key == Key.Down) { double result;
SmallDown(); if (double.TryParse(textBox.Text, out result)) {
e.Handled = true; SetValue(result);
} } else {
else if (e.Key == Key.PageUp) { Print();
LargeUp();
e.Handled = true;
}
else if (e.Key == Key.PageDown) {
LargeDown();
e.Handled = true;
} }
//else if (e.Key == Key.Home) { }
// Maximize();
// e.Handled = true; protected override void OnLostFocus(RoutedEventArgs e)
//} {
//else if (e.Key == Key.End) { base.OnLostFocus(e);
// Minimize(); SetInputValue();
// e.Handled = true;
//}
} }
//protected override void OnMouseWheel(MouseWheelEventArgs e) //protected override void OnMouseWheel(MouseWheelEventArgs e)
@ -286,7 +298,7 @@ namespace ICSharpCode.SharpDevelop.Widgets
Print(); Print();
} }
else if (e.Property == SmallChangeProperty && else if (e.Property == SmallChangeProperty &&
ReadLocalValue(LargeChangeProperty) == DependencyProperty.UnsetValue) { ReadLocalValue(LargeChangeProperty) == DependencyProperty.UnsetValue) {
LargeChange = SmallChange * 10; LargeChange = SmallChange * 10;
} }
} }

Loading…
Cancel
Save