ToolStripDropDownButtonBase.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. namespace System.Windows.Forms
  2. {
  3. public class ToolStripDropDownButtonBase : ToolStripDropDownItem
  4. {
  5. private CustomControls.DropDownButtonBase button;
  6. public ToolStripDropDown DropDown { get; set; }
  7. public override ToolStripItemCollection DropDownItems => DropDown.Items;
  8. public override System.Drawing.Size ImageSize
  9. {
  10. get => new System.Drawing.Size((int)button.ImageWidth, (int)button.ImageHeight);
  11. set
  12. {
  13. button.ImageWidth = value.Width;
  14. button.ImageHeight = value.Height;
  15. }
  16. }
  17. public bool Vertical
  18. {
  19. get => button.IsVertical;
  20. set => button.IsVertical = value;
  21. }
  22. public bool IsDropDownOpen
  23. {
  24. get => button.IsDropDownOpen;
  25. set => button.IsDropDownOpen = value;
  26. }
  27. protected void SetButton(CustomControls.DropDownButtonBase button)
  28. {
  29. this.button = button;
  30. SetControl(button);
  31. button.VerticalAlignment = VerticalAlignment.Stretch;
  32. }
  33. protected override void OnFontChanged(EventArgs e)
  34. {
  35. base.OnFontChanged(e);
  36. DropDown.Font = Font;
  37. }
  38. public override void ApplyStyle(ToolStripProfessionalRenderer r)
  39. {
  40. button.Foreground = r.Foreground;
  41. button.Resources["Button.Static.Background"] = r.ButtonStaticBackground;
  42. button.Resources["Button.Static.Border"] = r.ButtonStaticBorder;
  43. button.Resources["Button.MouseOver.Background"] = r.ButtonMouseOverBackground;
  44. button.Resources["Button.MouseOver.Border"] = r.ButtonMouseOverBorder;
  45. button.Resources["Button.Arrow.Background"] = r.ButtonArrowBackground;
  46. DropDown.Renderer = r;
  47. if (Parent?.Vertical ?? false)
  48. button.Margin = new Thickness(0, 0, 0, 3);
  49. }
  50. internal override void ResetImage()
  51. {
  52. base.ResetImage();
  53. button.Image = ImageSource;
  54. }
  55. protected override void UpdateText()
  56. {
  57. base.UpdateText();
  58. if (button != null)
  59. button.Text = DisplayStyle == ToolStripItemDisplayStyle.None || DisplayStyle == ToolStripItemDisplayStyle.Image ? "" : Text;
  60. }
  61. public ToolStripDropDownButtonBase()
  62. {
  63. DropDown = new ContextMenuStrip();
  64. DropDown.Opening += (s, e) => OnDropDownOpening(e);
  65. DropDown.Opened += (s, e) =>
  66. {
  67. OnDropDownOpened(e);
  68. IsDropDownOpen = true;
  69. };
  70. DropDown.Closed += (s, e) =>
  71. {
  72. OnDropDownClosed(e);
  73. IsDropDownOpen = false;
  74. };
  75. (DropDown as ContextMenuStrip).ItemClicked += (s, e) => OnDropDownItemClicked(e);
  76. DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
  77. }
  78. }
  79. }