ShortcutEditorForm.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System.Linq;
  2. using System.Windows.Forms;
  3. using FastReport.Utils;
  4. namespace FastReport.Forms
  5. {
  6. public partial class ShortcutEditorForm : BaseDialogForm
  7. {
  8. private Keys keys;
  9. public Keys Keys
  10. {
  11. get { return keys; }
  12. set { keys = value; lblKeybinding.Text = Converter.ShortcutKeysToStr(Keys); }
  13. }
  14. /// <inheritdoc/>
  15. protected override bool ProcessDialogKey(Keys keyData)
  16. {
  17. if (IsValidKeys(keyData))
  18. {
  19. lblKeybinding.Text = Converter.ShortcutKeysToStr(keyData);
  20. Keys = keyData;
  21. }
  22. else
  23. {
  24. lblKeybinding.Text = Res.Get("Forms,ShortcutEditor,UnsupportedShortcut");
  25. keys = Keys.None;
  26. }
  27. if (keyData == Keys.Enter || keyData == Keys.Escape)
  28. return base.ProcessDialogKey(keyData);
  29. return true;
  30. }
  31. private bool IsValidKeys(Keys keyData)
  32. {
  33. var keys = Converter.ValidShortcutKeys.Keys.ToList();
  34. keys.Sort();
  35. keys.Reverse();
  36. foreach (var k in keys)
  37. {
  38. if (keyData.HasFlag(k))
  39. keyData &= ~k;
  40. }
  41. return keyData == Keys.None;
  42. }
  43. public ShortcutEditorForm()
  44. {
  45. InitializeComponent();
  46. Localize();
  47. }
  48. /// <inheritdoc/>
  49. public override void Localize()
  50. {
  51. base.Localize();
  52. MyRes res = new MyRes("Forms,ShortcutEditor");
  53. Text = res.Get("");
  54. lblNeedInput.Text = res.Get("NeedInputShortcut");
  55. }
  56. }
  57. }