ToolStripOpenButton.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using FastReport.Design;
  2. using FastReport.Utils;
  3. using System;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. namespace FastReport.Controls
  7. {
  8. internal class ToolStripOpenButton : ToolStripSplitButton
  9. {
  10. private Designer designer;
  11. private void btnOpen_DropDownOpening(object sender, EventArgs e)
  12. {
  13. DropDown.Items.Clear();
  14. if (designer.cmdRecentFiles.Enabled)
  15. {
  16. foreach (string s in designer.RecentFiles)
  17. {
  18. var item = new ToolStripMenuItem(s) { Font = DrawUtils.DefaultFont };
  19. if (designer.cmdRecentFiles.IsCloudFile(s))
  20. item.Image = designer.GetImage(259);
  21. DropDown.Items.Insert(0, item);
  22. }
  23. }
  24. // wpf
  25. if (e is CancelEventArgs c && DropDown.Items.Count == 0)
  26. c.Cancel = true;
  27. }
  28. private void btnOpen_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
  29. {
  30. DropDown.Close();
  31. designer.cmdRecentFiles.LoadFile(e.ClickedItem.Text);
  32. }
  33. public ToolStripOpenButton(Designer designer)
  34. {
  35. this.designer = designer;
  36. DisplayStyle = ToolStripItemDisplayStyle.Image;
  37. DropDownOpening += btnOpen_DropDownOpening;
  38. ButtonClick += designer.cmdOpen.Invoke;
  39. DropDownItemClicked += btnOpen_DropDownItemClicked;
  40. }
  41. }
  42. }