TrackBar.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.ComponentModel;
  2. namespace System.Windows.Forms
  3. {
  4. public class TrackBar : Control, ISupportInitialize
  5. {
  6. private System.Windows.Controls.Slider slider;
  7. protected new System.Windows.Controls.ContentControl control { get; }
  8. public int Maximum
  9. {
  10. get => (int)slider.Maximum;
  11. set => slider.Maximum = value;
  12. }
  13. public int Minimum
  14. {
  15. get => (int)slider.Minimum;
  16. set => slider.Minimum = value;
  17. }
  18. public int Value
  19. {
  20. get => (int)slider.Value;
  21. set => slider.Value = value;
  22. }
  23. public int TickFrequency
  24. {
  25. get => (int)slider.TickFrequency;
  26. set => slider.TickFrequency = value;
  27. }
  28. public TickStyle TickStyle
  29. {
  30. get => (TickStyle)slider.TickPlacement;
  31. set => slider.TickPlacement = (Windows.Controls.Primitives.TickPlacement)value;
  32. }
  33. public Orientation Orientation
  34. {
  35. get => (Orientation)slider.Orientation;
  36. set => slider.Orientation = (Windows.Controls.Orientation)value;
  37. }
  38. public event EventHandler ValueChanged;
  39. protected virtual void OnValueChanged(EventArgs e) => ValueChanged?.Invoke(this, e);
  40. public void BeginInit() { }
  41. public void EndInit() { }
  42. public TrackBar()
  43. {
  44. slider = new();
  45. slider.HorizontalAlignment = Windows.HorizontalAlignment.Stretch;
  46. slider.VerticalAlignment = VerticalAlignment.Stretch;
  47. control = new();
  48. control.Content = slider;
  49. slider.Margin = new Thickness(8, 0, 8, 0);
  50. SetControl(control);
  51. TickStyle = TickStyle.BottomRight;
  52. slider.ValueChanged += (sender, e) => OnValueChanged(e);
  53. slider.PreviewMouseLeftButtonUp += (sender, e) => OnMouseUp(Helper.GetMouseEventArgs(slider, e));
  54. }
  55. }
  56. }