ShortKeys.cs 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using PaintDotNet.Base.SettingModel;
  11. using PaintDotNet.Base.CommTool;
  12. using System.IO;
  13. namespace PaintDotNet.Instrument.CustomInterface
  14. {
  15. internal class ShortKeys : UserControl
  16. {
  17. private AppWorkspace appWorkspace;
  18. /// <summary>
  19. /// 右侧树形菜单
  20. /// </summary>
  21. private ToolStripItemCollection collectionRight;
  22. /// <summary>
  23. /// 设置热键的标记
  24. /// </summary>
  25. private bool setHotKey = false;
  26. /// <summary>
  27. /// 为当前菜单设置的热键的list
  28. /// </summary>
  29. private List<string> hotKeys = new List<string>();
  30. private Panel panel1;
  31. private GroupBox groupBox3;
  32. private Label label1;
  33. private Button button7;
  34. private GroupBox groupBox4;
  35. private Label label3;
  36. private TextBox textBox1;
  37. private Button button8;
  38. private GroupBox groupBox5;
  39. private Label label2;
  40. private GroupBox groupBox7;
  41. private TreeView treeViewRight;
  42. private ListView listView2;
  43. private GroupBox groupBox6;
  44. private HotkeyModel hotkeyModel = Startup.instance.hotkeyModel;
  45. private string txtPath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\ModuleConfig.txt";
  46. private string[] menuIdArr;
  47. public ShortKeys(AppWorkspace appWorkspace)
  48. {
  49. this.appWorkspace = appWorkspace;
  50. InitializeComponent();
  51. InitializeLanguageText();
  52. InitVisibleMenuId();
  53. InitializeTreeData();
  54. listView2.View = View.Details;
  55. listView2.Columns.Add("0", 0, HorizontalAlignment.Center);
  56. listView2.Columns.Add(PdnResources.GetString("Menu.tool.Generateshortcut.function.text"), 150, HorizontalAlignment.Center);
  57. listView2.Columns.Add(PdnResources.GetString("Menu.hotkey.text"), 200, HorizontalAlignment.Center);
  58. listView2.BeginUpdate();
  59. foreach (HotkeyModel.Item s in hotkeyModel.items)
  60. {
  61. var lv = new ListViewItem();
  62. lv.Tag = s.HotKeys;
  63. lv.Text = "1";
  64. lv.SubItems.Add(s.MenuName);
  65. lv.SubItems.Add(s.HotKeys);
  66. lv.SubItems.Add("");
  67. listView2.Items.Add(lv);
  68. }
  69. listView2.EndUpdate();
  70. }
  71. /// <summary>
  72. /// 获取txt文件中已保存的菜单可用id
  73. /// </summary>
  74. private void InitVisibleMenuId()
  75. {
  76. if (System.IO.File.Exists(txtPath))
  77. {
  78. string str = System.IO.File.ReadAllText(txtPath);
  79. if (str.IndexOf(',') != -1)
  80. {
  81. menuIdArr = str.Split(',');
  82. }
  83. else
  84. {
  85. if (!string.IsNullOrEmpty(str))
  86. {
  87. menuIdArr = new string[] { str };
  88. }
  89. }
  90. }
  91. }
  92. /// <summary>
  93. /// 初始化树形菜单数据
  94. /// </summary>
  95. private void InitializeTreeData()
  96. {
  97. this.collectionRight = this.appWorkspace.ToolBar.MainMenu.Items;
  98. TreeNode anime = new TreeNode(PdnResources.GetString("Menu.menu.Text"));
  99. this.RecursiveData(collectionRight, anime);
  100. anime.Expand();
  101. this.treeViewRight.Nodes.Add(anime);
  102. }
  103. /// <summary>
  104. /// 递归进行数据组织
  105. /// </summary>
  106. private void RecursiveData(ToolStripItemCollection collection, TreeNode anime)
  107. {
  108. //for (int i = 0; i < collection.Count; i++)
  109. //{
  110. // //排除掉最近打开的文件,或者可以用数字id判断更准确
  111. // if (!collection[i].Name.Equals("OpenRecent") && !collection[i].Name.Equals("CameraSelection"))
  112. // {
  113. // if (collection[i].GetType() != typeof(ToolStripSeparator) && ((PdnMenuItem)collection[i]).CanShowInSenseShield)
  114. // {
  115. // TreeNode node = new TreeNode();
  116. // node.Name = collection[i].Name;
  117. // node.Text = collection[i].Text;
  118. // node.Tag = ((PdnMenuItem)collection[i]).MenuId;
  119. // anime.Nodes.Add(node);
  120. // RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, node);
  121. // }
  122. // }
  123. //}
  124. for (int i = 0; i < collection.Count; i++)
  125. {
  126. //排除掉最近打开的文件,或者可以用数字id判断更准确
  127. if (!collection[i].Name.Equals("OpenRecent") && !collection[i].Name.Equals("CameraSelection"))
  128. {
  129. TreeNode node = new TreeNode(/*collection[i].Text*/);
  130. if (collection[i] is PdnMenuItem)
  131. {
  132. PdnMenuItem item = (PdnMenuItem)collection[i];
  133. if (!item.CanShowInSenseShield)
  134. continue;
  135. node.Tag = item.MenuId;
  136. if (menuIdArr != null && menuIdArr.Length > 0)
  137. {
  138. if (Array.IndexOf(menuIdArr, item.MenuId.ToString()) != -1)
  139. {
  140. node.Name = collection[i].Name;
  141. node.Text = collection[i].Text;
  142. node.Tag = ((PdnMenuItem)collection[i]).MenuId;
  143. node.Checked = true;
  144. }
  145. else
  146. {
  147. node.Checked = false;
  148. }
  149. }
  150. if (node.Checked)
  151. {
  152. anime.Nodes.Add(node);
  153. }
  154. if (collection[i].Name.Equals("OpenRecent") || collection[i].Name.Equals("CameraSelection"))
  155. continue;
  156. RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, node);
  157. }
  158. }
  159. }
  160. }
  161. #region 组件设计器生成的代码
  162. private void InitializeLanguageText()
  163. {
  164. this.groupBox3.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Theselectcutkey.text");
  165. this.button7.Text = PdnResources.GetString("Menu.Edit.Delete.Text");
  166. this.groupBox4.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Maintainshortcut.text");
  167. this.label3.Text = PdnResources.GetString("Menu.tool.Generateshortcut.ThehotkeorAlt:orF*.text");
  168. this.button8.Text = PdnResources.GetString("Menu.Setting.Text");
  169. this.groupBox5.Text = PdnResources.GetString("Menu.Thisshortcutkeyhasbeenappliedto.text");
  170. this.groupBox7.Text = PdnResources.GetString("Menu.Availablefunctions.text");
  171. this.groupBox6.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Listofallfortcutkeys.text");
  172. }
  173. /// <summary>
  174. /// 设计器支持所需的方法 - 不要修改
  175. /// 使用代码编辑器修改此方法的内容。
  176. /// </summary>
  177. private void InitializeComponent()
  178. {
  179. this.panel1 = new System.Windows.Forms.Panel();
  180. this.groupBox3 = new System.Windows.Forms.GroupBox();
  181. this.label1 = new System.Windows.Forms.Label();
  182. this.button7 = new System.Windows.Forms.Button();
  183. this.groupBox4 = new System.Windows.Forms.GroupBox();
  184. this.label3 = new System.Windows.Forms.Label();
  185. this.textBox1 = new System.Windows.Forms.TextBox();
  186. this.button8 = new System.Windows.Forms.Button();
  187. this.groupBox5 = new System.Windows.Forms.GroupBox();
  188. this.label2 = new System.Windows.Forms.Label();
  189. this.groupBox7 = new System.Windows.Forms.GroupBox();
  190. this.treeViewRight = new System.Windows.Forms.TreeView();
  191. this.listView2 = new System.Windows.Forms.ListView();
  192. this.groupBox6 = new System.Windows.Forms.GroupBox();
  193. this.panel1.SuspendLayout();
  194. this.groupBox3.SuspendLayout();
  195. this.groupBox4.SuspendLayout();
  196. this.groupBox5.SuspendLayout();
  197. this.groupBox7.SuspendLayout();
  198. this.SuspendLayout();
  199. //
  200. // panel1
  201. //
  202. this.panel1.Controls.Add(this.groupBox3);
  203. this.panel1.Controls.Add(this.groupBox4);
  204. this.panel1.Controls.Add(this.groupBox5);
  205. this.panel1.Controls.Add(this.groupBox7);
  206. this.panel1.Controls.Add(this.groupBox6);
  207. this.panel1.Location = new System.Drawing.Point(0, 0);
  208. this.panel1.Name = "panel1";
  209. this.panel1.Size = new System.Drawing.Size(623, 398);
  210. this.panel1.TabIndex = 0;
  211. //
  212. // groupBox3
  213. //
  214. this.groupBox3.Controls.Add(this.label1);
  215. this.groupBox3.Controls.Add(this.button7);
  216. this.groupBox3.Location = new System.Drawing.Point(0, 3);
  217. this.groupBox3.Margin = new System.Windows.Forms.Padding(0);
  218. this.groupBox3.Name = "groupBox3";
  219. this.groupBox3.Size = new System.Drawing.Size(361, 58);
  220. this.groupBox3.TabIndex = 9;
  221. this.groupBox3.TabStop = false;
  222. this.groupBox3.Text = "所选功能快捷键";
  223. //
  224. // label1
  225. //
  226. this.label1.AutoSize = true;
  227. this.label1.Location = new System.Drawing.Point(9, 29);
  228. this.label1.Name = "label1";
  229. this.label1.Size = new System.Drawing.Size(0, 12);
  230. this.label1.TabIndex = 1;
  231. //
  232. // button7
  233. //
  234. this.button7.Location = new System.Drawing.Point(267, 20);
  235. this.button7.Name = "button7";
  236. this.button7.Size = new System.Drawing.Size(75, 23);
  237. this.button7.TabIndex = 0;
  238. this.button7.Text = "删除";
  239. this.button7.UseVisualStyleBackColor = true;
  240. this.button7.Click += button7_Click;
  241. //
  242. // groupBox4
  243. //
  244. this.groupBox4.Controls.Add(this.label3);
  245. this.groupBox4.Controls.Add(this.textBox1);
  246. this.groupBox4.Controls.Add(this.button8);
  247. this.groupBox4.Location = new System.Drawing.Point(0, 67);
  248. this.groupBox4.Name = "groupBox4";
  249. this.groupBox4.Size = new System.Drawing.Size(361, 76);
  250. this.groupBox4.TabIndex = 10;
  251. this.groupBox4.TabStop = false;
  252. this.groupBox4.Text = "维护快捷键";
  253. //
  254. // label3
  255. //
  256. this.label3.AutoSize = true;
  257. this.label3.Location = new System.Drawing.Point(9, 50);
  258. this.label3.Name = "label3";
  259. this.label3.Size = new System.Drawing.Size(293, 12);
  260. this.label3.TabIndex = 2;
  261. this.label3.Text = "快捷键必须包含Ctrl或Alt; 或F*";
  262. //
  263. // textBox1
  264. //
  265. this.textBox1.Location = new System.Drawing.Point(9, 22);
  266. this.textBox1.Name = "textBox1";
  267. this.textBox1.ReadOnly = true;
  268. this.textBox1.Size = new System.Drawing.Size(252, 21);
  269. this.textBox1.TabIndex = 1;
  270. this.textBox1.KeyUp += textBox1_KeyUp;
  271. this.textBox1.PreviewKeyDown += textBox1_PreviewKeyDown;
  272. //this.textBox1.KeyDown += textBox1_KeyDown;
  273. //
  274. // button8
  275. //
  276. this.button8.Enabled = false;
  277. this.button8.Location = new System.Drawing.Point(267, 22);
  278. this.button8.Name = "button8";
  279. this.button8.Size = new System.Drawing.Size(75, 23);
  280. this.button8.TabIndex = 0;
  281. this.button8.Text = "设置";
  282. this.button8.UseVisualStyleBackColor = true;
  283. this.button8.Click += Button8_Click;
  284. //
  285. // groupBox5
  286. //
  287. this.groupBox5.Controls.Add(this.label2);
  288. this.groupBox5.Location = new System.Drawing.Point(0, 149);
  289. this.groupBox5.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
  290. this.groupBox5.Name = "groupBox5";
  291. this.groupBox5.Size = new System.Drawing.Size(361, 58);
  292. this.groupBox5.TabIndex = 11;
  293. this.groupBox5.TabStop = false;
  294. this.groupBox5.Text = "此快捷键已应用至";
  295. //
  296. // label2
  297. //
  298. this.label2.AutoSize = true;
  299. this.label2.Location = new System.Drawing.Point(9, 29);
  300. this.label2.Name = "label2";
  301. this.label2.Size = new System.Drawing.Size(0, 12);
  302. this.label2.TabIndex = 0;
  303. //
  304. // groupBox7
  305. //
  306. this.groupBox7.Controls.Add(this.treeViewRight);
  307. this.groupBox7.Location = new System.Drawing.Point(367, 0);
  308. this.groupBox7.Name = "groupBox7";
  309. this.groupBox7.Size = new System.Drawing.Size(256, 401);
  310. this.groupBox7.TabIndex = 13;
  311. this.groupBox7.TabStop = false;
  312. this.groupBox7.Text = "可用功能";
  313. //
  314. // treeView1
  315. //
  316. this.treeViewRight.Location = new System.Drawing.Point(7, 20);
  317. this.treeViewRight.Name = "treeView1";
  318. this.treeViewRight.Size = new System.Drawing.Size(243, 372);
  319. this.treeViewRight.TabIndex = 0;
  320. this.treeViewRight.NodeMouseClick += treeView1_NodeMouseClick;
  321. this.treeViewRight.HideSelection = false;
  322. this.treeViewRight.DrawMode = TreeViewDrawMode.OwnerDrawText;
  323. this.treeViewRight.DrawNode += new DrawTreeNodeEventHandler(this.treeViewRight_DrawNode);
  324. //
  325. // groupBox6
  326. //
  327. this.groupBox6.Controls.Add(this.listView2);
  328. this.groupBox6.Location = new System.Drawing.Point(0, 211);
  329. this.groupBox6.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
  330. this.groupBox6.Name = "groupBox6";
  331. this.groupBox6.Size = new System.Drawing.Size(361, 187);
  332. this.groupBox6.TabIndex = 12;
  333. this.groupBox6.TabStop = false;
  334. this.groupBox6.Text = "所有已指派快捷键的功能列表";
  335. //
  336. // listView2
  337. //
  338. this.listView2.FullRowSelect = true;
  339. this.listView2.HideSelection = false;
  340. this.listView2.Location = new System.Drawing.Point(6, 20);
  341. this.listView2.MultiSelect = false;
  342. this.listView2.Name = "listView2";
  343. this.listView2.Size = new System.Drawing.Size(355/*382*/, 181/*441*/);
  344. this.listView2.TabIndex = 24;
  345. this.listView2.UseCompatibleStateImageBehavior = false;
  346. this.listView2.ItemSelectionChanged += ListView2_ItemSelectionChanged;
  347. //
  348. // ShortKeys
  349. //
  350. this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
  351. this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  352. this.Controls.Add(this.panel1);
  353. this.Margin = new System.Windows.Forms.Padding(0);
  354. this.Name = "ShortKeys";
  355. this.Size = new System.Drawing.Size(623, 398);
  356. this.panel1.ResumeLayout(false);
  357. this.groupBox3.ResumeLayout(false);
  358. this.groupBox3.PerformLayout();
  359. this.groupBox4.ResumeLayout(false);
  360. this.groupBox4.PerformLayout();
  361. this.groupBox5.ResumeLayout(false);
  362. this.groupBox5.PerformLayout();
  363. this.groupBox7.ResumeLayout(false);
  364. this.ResumeLayout(false);
  365. }
  366. private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
  367. {
  368. if (!setHotKey)
  369. {
  370. setHotKey = true;
  371. this.textBox1.Text = "";
  372. this.hotKeys.Clear();
  373. }
  374. string keyString = e.KeyCode.ToString();
  375. if (keyString.Equals("ControlKey"))
  376. {
  377. keyString = "Control";
  378. }
  379. if (keyString.Equals("ShiftKey"))
  380. {
  381. keyString = "Shift";
  382. }
  383. if (keyString.Equals("Menu"))
  384. {
  385. keyString = "Alt";
  386. }
  387. if (setHotKey && !keyString.Equals("") && this.hotKeys.IndexOf(keyString) == -1)
  388. {
  389. this.hotKeys.Add(keyString);
  390. if (this.textBox1.Text.Equals(""))
  391. {
  392. this.textBox1.Text = keyString;
  393. }
  394. else
  395. {
  396. this.textBox1.Text += " + " + keyString;
  397. }
  398. }
  399. this.button8.Enabled = !this.textBox1.Text.Equals("");
  400. }
  401. /// <summary>
  402. /// 自定义绘制
  403. /// 参考https://www.cnblogs.com/JiYF/p/6693503.html
  404. /// </summary>
  405. /// <param name="sender"></param>
  406. /// <param name="e"></param>
  407. private void treeViewRight_DrawNode(object sender, DrawTreeNodeEventArgs e)
  408. {
  409. /**用默认颜色
  410. e.DrawDefault = true;
  411. return;
  412. **/
  413. //以下是自定义颜色
  414. if ((e.State & TreeNodeStates.Selected) != 0)
  415. {
  416. //演示为蓝(绿)底白字
  417. e.Graphics.FillRectangle(SystemBrushes.Highlight/*Brushes.Green*/, e.Node.Bounds);
  418. Font nodeFont = e.Node.NodeFont;
  419. if (nodeFont == null) nodeFont = ((TreeView)sender).Font;
  420. e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, Rectangle.Inflate(e.Bounds, 2, 0));
  421. }
  422. else
  423. {
  424. e.DrawDefault = true;
  425. }
  426. if ((e.State & TreeNodeStates.Focused) != 0)
  427. {
  428. using (Pen focusPen = new Pen(Color.Black))
  429. {
  430. focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
  431. Rectangle focusBounds = e.Node.Bounds;
  432. focusBounds.Size = new Size(focusBounds.Width - 1,
  433. focusBounds.Height - 1);
  434. e.Graphics.DrawRectangle(focusPen, focusBounds);
  435. }
  436. }
  437. }
  438. /// <summary>
  439. /// 设置
  440. /// </summary>
  441. /// <param name="sender"></param>
  442. /// <param name="e"></param>
  443. private void Button8_Click(object sender, EventArgs e)
  444. {
  445. try
  446. {
  447. //throw new NotImplementedException();
  448. TreeNode node = this.treeViewRight.SelectedNode;
  449. if (node != null)
  450. {
  451. //判断快捷键是否已经被使用
  452. HotkeyModel.Item isExsit = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.textBox1.Text));
  453. if(isExsit != null)
  454. {
  455. MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeysarealreadyiuse.text"));
  456. return;
  457. }
  458. int menuId = (int)this.treeViewRight.SelectedNode.Tag;
  459. string desc = this.treeViewRight.SelectedNode.Name;
  460. string name = this.treeViewRight.SelectedNode.Text;
  461. //设置快捷键
  462. ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(desc, true);
  463. if (menu != null && menu.Length > 0)
  464. {
  465. ((PdnMenuItem)menu[0]).resetShortcutKeys(this.textBox1.Text);
  466. }
  467. SaveShortcutKeys();
  468. //处理界面数据
  469. HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
  470. if (item != null)
  471. {
  472. foreach (ListViewItem item1 in listView2.Items)
  473. {
  474. if (item1.SubItems[2].Text.Equals(item.HotKeys))
  475. {
  476. item1.SubItems[2].Text = this.textBox1.Text;
  477. break;
  478. }
  479. }
  480. item.HotKeys = this.textBox1.Text;
  481. }
  482. else
  483. {
  484. HotkeyModel.Item item1 = new HotkeyModel.Item();
  485. item1.MenuId = menuId;
  486. item1.MenuName = name;
  487. item1.Description = desc;
  488. item1.HotKeys = this.textBox1.Text;
  489. Startup.instance.hotkeyModel.items.Add(item1);
  490. this.hotkeyModel = Startup.instance.hotkeyModel;
  491. SaveShortcutKeys();
  492. var lv = new ListViewItem();
  493. lv.Tag = this.textBox1.Text;
  494. lv.Text = "1";
  495. lv.SubItems.Add(name);
  496. lv.SubItems.Add(this.textBox1.Text);
  497. lv.SubItems.Add("");
  498. listView2.Items.Add(lv);
  499. }
  500. }
  501. }
  502. catch (Exception)
  503. {
  504. MessageBox.Show(PdnResources.GetString("Menu.conformtotherulespleasecheck.text")+"!");
  505. }
  506. }
  507. private void ListView2_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
  508. {
  509. //throw new NotImplementedException();
  510. listView2.FullRowSelect = true;
  511. if (this.listView2.SelectedItems.Count > 0)
  512. {
  513. foreach (ListViewItem item in listView2.Items)
  514. {
  515. if (item.Selected)
  516. {
  517. this.label1.Text = item.Tag as string;
  518. break;
  519. }
  520. }
  521. }
  522. }
  523. #endregion
  524. /// <summary>
  525. /// 按键抬起事件,需判断是否合法
  526. /// 快捷键必须包含ctrl或alt;或back、delete、esc、F*
  527. /// </summary>
  528. /// <param name="sender"></param>
  529. /// <param name="e"></param>
  530. private void textBox1_KeyUp(object sender, KeyEventArgs e)
  531. {
  532. setHotKey = false;
  533. //检测合法性
  534. //e.Handled = true;
  535. e.SuppressKeyPress = true;
  536. //检测是否被占用
  537. HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.textBox1.Text));
  538. if (item != null)
  539. {
  540. this.label2.Text = item.MenuName;
  541. this.button8.Enabled = false;
  542. }
  543. else
  544. {
  545. this.label2.Text = PdnResources.GetString("Menu.Nofunctionaluse.text");
  546. List<List<Keys>> keysAll = new List<List<Keys>>()
  547. {
  548. new List<Keys>() { Keys.Alt, Keys.D0 },
  549. new List<Keys>() { Keys.Alt, Keys.D1},
  550. new List<Keys>() { Keys.Alt, Keys.D2},
  551. new List<Keys>() { Keys.Alt, Keys.D3},
  552. new List<Keys>() { Keys.Alt, Keys.D4},
  553. new List<Keys>() { Keys.Alt, Keys.D5},
  554. new List<Keys>() { Keys.Alt, Keys.D6},
  555. new List<Keys>() { Keys.Alt, Keys.D7},
  556. new List<Keys>() { Keys.Alt, Keys.D8},
  557. new List<Keys>() { Keys.Alt, Keys.D9},
  558. new List<Keys>() { Keys.Alt, Keys.Back},
  559. new List<Keys>() { Keys.Alt, Keys.Down},
  560. new List<Keys>() { Keys.Alt, Keys.F1},
  561. new List<Keys>() { Keys.Alt, Keys.F10},
  562. new List<Keys>() { Keys.Alt, Keys.F11},
  563. new List<Keys>() { Keys.Alt, Keys.F12},
  564. new List<Keys>() { Keys.Alt, Keys.F2},
  565. new List<Keys>() { Keys.Alt, Keys.F3},
  566. new List<Keys>() { Keys.Alt, Keys.F4},
  567. new List<Keys>() { Keys.Alt, Keys.F5},
  568. new List<Keys>() { Keys.Alt, Keys.F6},
  569. new List<Keys>() { Keys.Alt, Keys.F7},
  570. new List<Keys>() { Keys.Alt, Keys.F8},
  571. new List<Keys>() { Keys.Alt, Keys.F9},
  572. new List<Keys>() { Keys.Alt, Keys.Left},
  573. new List<Keys>() { Keys.Alt, Keys.Right},
  574. new List<Keys>() { Keys.Alt, Keys.Up},
  575. new List<Keys>() { Keys.Control, Keys.D0},
  576. new List<Keys>() { Keys.Control, Keys.D1},
  577. new List<Keys>() { Keys.Control, Keys.D2},
  578. new List<Keys>() { Keys.Control, Keys.D3},
  579. new List<Keys>() { Keys.Control, Keys.D4},
  580. new List<Keys>() { Keys.Control, Keys.D5},
  581. new List<Keys>() { Keys.Control, Keys.D6},
  582. new List<Keys>() { Keys.Control, Keys.D7},
  583. new List<Keys>() { Keys.Control, Keys.D8},
  584. new List<Keys>() { Keys.Control, Keys.D9},
  585. new List<Keys>() { Keys.Control, Keys.A},
  586. new List<Keys>() { Keys.Control, Keys.B},
  587. new List<Keys>() { Keys.Control, Keys.C},
  588. new List<Keys>() { Keys.Control, Keys.D},
  589. new List<Keys>() { Keys.Control, Keys.Delete},
  590. new List<Keys>() { Keys.Control, Keys.E},
  591. new List<Keys>() { Keys.Control, Keys.F},
  592. new List<Keys>() { Keys.Control, Keys.F1},
  593. new List<Keys>() { Keys.Control, Keys.F10},
  594. new List<Keys>() { Keys.Control, Keys.F11},
  595. new List<Keys>() { Keys.Control, Keys.F12},
  596. new List<Keys>() { Keys.Control, Keys.F2},
  597. new List<Keys>() { Keys.Control, Keys.F3},
  598. new List<Keys>() { Keys.Control, Keys.F4},
  599. new List<Keys>() { Keys.Control, Keys.F5},
  600. new List<Keys>() { Keys.Control, Keys.F6},
  601. new List<Keys>() { Keys.Control, Keys.F7},
  602. new List<Keys>() { Keys.Control, Keys.F8},
  603. new List<Keys>() { Keys.Control, Keys.F9},
  604. new List<Keys>() { Keys.Control, Keys.G},
  605. new List<Keys>() { Keys.Control, Keys.H},
  606. new List<Keys>() { Keys.Control, Keys.I},
  607. new List<Keys>() { Keys.Control, Keys.Insert},
  608. new List<Keys>() { Keys.Control, Keys.J},
  609. new List<Keys>() { Keys.Control, Keys.K},
  610. new List<Keys>() { Keys.Control, Keys.L},
  611. new List<Keys>() { Keys.Control, Keys.M},
  612. new List<Keys>() { Keys.Control, Keys.N},
  613. new List<Keys>() { Keys.Control, Keys.O},
  614. new List<Keys>() { Keys.Control, Keys.P},
  615. new List<Keys>() { Keys.Control, Keys.Q},
  616. new List<Keys>() { Keys.Control, Keys.R},
  617. new List<Keys>() { Keys.Control, Keys.S},
  618. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D0},
  619. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D1},
  620. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D2},
  621. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D3},
  622. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D4},
  623. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D5},
  624. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D6},
  625. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D7},
  626. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D8},
  627. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D9},
  628. new List<Keys>() { Keys.Control, Keys.Shift, Keys.A},
  629. new List<Keys>() { Keys.Control, Keys.Shift, Keys.B},
  630. new List<Keys>() { Keys.Control, Keys.Shift, Keys.C},
  631. new List<Keys>() { Keys.Control, Keys.Shift, Keys.D},
  632. new List<Keys>() { Keys.Control, Keys.Shift, Keys.E},
  633. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F},
  634. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F1},
  635. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F10},
  636. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F11},
  637. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F12},
  638. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F2},
  639. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F3},
  640. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F4},
  641. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F5},
  642. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F6},
  643. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F7},
  644. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F8},
  645. new List<Keys>() { Keys.Control, Keys.Shift, Keys.F9},
  646. new List<Keys>() { Keys.Control, Keys.Shift, Keys.G},
  647. new List<Keys>() { Keys.Control, Keys.Shift, Keys.H},
  648. new List<Keys>() { Keys.Control, Keys.Shift, Keys.I},
  649. new List<Keys>() { Keys.Control, Keys.Shift, Keys.J},
  650. new List<Keys>() { Keys.Control, Keys.Shift, Keys.K},
  651. new List<Keys>() { Keys.Control, Keys.Shift, Keys.L},
  652. new List<Keys>() { Keys.Control, Keys.Shift, Keys.M},
  653. new List<Keys>() { Keys.Control, Keys.Shift, Keys.N},
  654. new List<Keys>() { Keys.Control, Keys.Shift, Keys.O},
  655. new List<Keys>() { Keys.Control, Keys.Shift, Keys.P},
  656. new List<Keys>() { Keys.Control, Keys.Shift, Keys.Q},
  657. new List<Keys>() { Keys.Control, Keys.Shift, Keys.R},
  658. new List<Keys>() { Keys.Control, Keys.Shift, Keys.S},
  659. new List<Keys>() { Keys.Control, Keys.Shift, Keys.T},
  660. new List<Keys>() { Keys.Control, Keys.Shift, Keys.U},
  661. new List<Keys>() { Keys.Control, Keys.Shift, Keys.V},
  662. new List<Keys>() { Keys.Control, Keys.Shift, Keys.W},
  663. new List<Keys>() { Keys.Control, Keys.Shift, Keys.X},
  664. new List<Keys>() { Keys.Control, Keys.Shift, Keys.Y},
  665. new List<Keys>() { Keys.Control, Keys.Shift, Keys.Z},
  666. new List<Keys>() { Keys.Control, Keys.T},
  667. new List<Keys>() { Keys.Control, Keys.U},
  668. new List<Keys>() { Keys.Control, Keys.V},
  669. new List<Keys>() { Keys.Control, Keys.W},
  670. new List<Keys>() { Keys.Control, Keys.X},
  671. new List<Keys>() { Keys.Control, Keys.Y},
  672. new List<Keys>() { Keys.Control, Keys.Z},
  673. new List<Keys>() { Keys.Delete},
  674. new List<Keys>() { Keys.F1},
  675. new List<Keys>() { Keys.F10},
  676. new List<Keys>() { Keys.F11},
  677. new List<Keys>() { Keys.F12},
  678. new List<Keys>() { Keys.F2},
  679. new List<Keys>() { Keys.F3},
  680. new List<Keys>() { Keys.F4},
  681. new List<Keys>() { Keys.F5},
  682. new List<Keys>() { Keys.F6},
  683. new List<Keys>() { Keys.F7},
  684. new List<Keys>() { Keys.F8},
  685. new List<Keys>() { Keys.F9},
  686. new List<Keys>() { Keys.Insert},
  687. new List<Keys>() { Keys.None},
  688. new List<Keys>() { Keys.Shift | Keys.Delete},
  689. new List<Keys>() { Keys.Shift | Keys.F1},
  690. new List<Keys>() { Keys.Shift | Keys.F10},
  691. new List<Keys>() { Keys.Shift | Keys.F11},
  692. new List<Keys>() { Keys.Shift | Keys.F12},
  693. new List<Keys>() { Keys.Shift | Keys.F2},
  694. new List<Keys>() { Keys.Shift | Keys.F3},
  695. new List<Keys>() { Keys.Shift | Keys.F4},
  696. new List<Keys>() { Keys.Shift | Keys.F5},
  697. new List<Keys>() { Keys.Shift | Keys.F6},
  698. new List<Keys>() { Keys.Shift | Keys.F7},
  699. new List<Keys>() { Keys.Shift | Keys.F8},
  700. new List<Keys>() { Keys.Shift | Keys.F9},
  701. new List<Keys>() { Keys.Shift | Keys.Insert}
  702. };
  703. string itemHotKeys = this.textBox1.Text;
  704. List<List<Keys>> keysFound = new List<List<Keys>>();
  705. if (itemHotKeys != null && !itemHotKeys.Equals(""))
  706. {
  707. string[] keys = itemHotKeys.Trim().Split('+');
  708. Keys Key = Keys.None;
  709. //寻找匹配的按键组合
  710. int keyIndex = 0;
  711. foreach (string key in keys)
  712. {
  713. if (Key == Keys.None)
  714. {
  715. Key = (Keys)(Enum.Parse(typeof(Keys), key.Trim()));
  716. //寻找可能匹配的按键组合
  717. foreach (var itemList in keysAll)
  718. {
  719. if (itemList.Contains(Key) && itemList.IndexOf(Key) == keyIndex && itemList.Count == keys.Length)
  720. keysFound.Add(itemList);
  721. }
  722. }
  723. else
  724. {
  725. Key = (Keys)(Enum.Parse(typeof(Keys), key.Trim()));
  726. //删除不匹配的按键组合
  727. for (int i = keysFound.Count - 1; i >= 0 ; i--)
  728. {
  729. var itemList = keysFound[i];
  730. if (!itemList.Contains(Key) || itemList.IndexOf(Key) != keyIndex)
  731. keysFound.RemoveAt(i);
  732. }
  733. }
  734. keyIndex++;
  735. }
  736. //没有找到匹配的按键组合
  737. if (keysFound.Count != 1)
  738. {
  739. this.textBox1.Text = "";
  740. }
  741. }
  742. this.button8.Enabled = !this.textBox1.Text.Equals("");
  743. }
  744. }
  745. /// <summary>
  746. /// 维护快捷键的textbox的按键按下事件
  747. /// </summary>
  748. /// <param name="sender"></param>
  749. /// <param name="e"></param>
  750. private void textBox1_KeyDown(object sender, KeyEventArgs e)
  751. {
  752. if (!setHotKey)
  753. {
  754. setHotKey = true;
  755. this.textBox1.Text = "";
  756. this.hotKeys.Clear();
  757. }
  758. string keyString = e.KeyCode.ToString();
  759. if (keyString.Equals("ControlKey"))
  760. {
  761. keyString = "Control";
  762. }
  763. if (keyString.Equals("ShiftKey"))
  764. {
  765. keyString = "Shift";
  766. }
  767. if (keyString.Equals("Menu"))
  768. {
  769. keyString = "Alt";
  770. }
  771. if (setHotKey && !keyString.Equals("") && this.hotKeys.IndexOf(keyString) == -1)
  772. {
  773. this.hotKeys.Add(keyString);
  774. if (this.textBox1.Text.Equals(""))
  775. {
  776. this.textBox1.Text = keyString;
  777. }
  778. else
  779. {
  780. this.textBox1.Text += " + " + keyString;
  781. }
  782. }
  783. this.button8.Enabled = !this.textBox1.Text.Equals("");
  784. }
  785. private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
  786. {
  787. int menuId = (e.Node.Tag != null) ? (int)(e.Node.Tag) : 0;
  788. if (menuId > 0)
  789. {
  790. if (Startup.instance.hotkeyModel != null
  791. && Startup.instance.hotkeyModel.items != null
  792. && Startup.instance.hotkeyModel.items.Count > 0)
  793. {
  794. HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
  795. if (item != null)
  796. {
  797. this.label1.Text = item.HotKeys;
  798. }
  799. else
  800. {
  801. this.label1.Text = PdnResources.GetString("Menu.arenotmaintained.text");
  802. }
  803. }
  804. }
  805. }
  806. /// <summary>
  807. /// 设置快捷键
  808. /// </summary>
  809. /// <param name="sender"></param>
  810. /// <param name="e"></param>
  811. private void button8_MouseClick(object sender, MouseEventArgs e)
  812. {
  813. TreeNode node = this.treeViewRight.SelectedNode;
  814. if (node != null)
  815. {
  816. int menuId = (int)this.treeViewRight.SelectedNode.Tag;
  817. string desc = this.treeViewRight.SelectedNode.Name;
  818. string name = this.treeViewRight.SelectedNode.Text;
  819. HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
  820. if (item != null)
  821. {
  822. item.HotKeys = this.textBox1.Text;
  823. }
  824. else
  825. {
  826. HotkeyModel.Item item1 = new HotkeyModel.Item();
  827. item1.MenuId = menuId;
  828. item1.MenuName = name;
  829. item1.Description = desc;
  830. item1.HotKeys = this.textBox1.Text;
  831. Startup.instance.hotkeyModel.items.Add(item1);
  832. }
  833. var lv = new ListViewItem();
  834. lv.Text = "1";
  835. lv.SubItems.Add(name);
  836. lv.SubItems.Add(this.textBox1.Text);
  837. lv.SubItems.Add("");
  838. listView2.Items.Add(lv);
  839. this.hotkeyModel = Startup.instance.hotkeyModel;
  840. SaveShortcutKeys();
  841. }
  842. }
  843. /// <summary>
  844. /// 保存快捷键
  845. /// </summary>
  846. private void SaveShortcutKeys()
  847. {
  848. string hotkeyModelXml = XmlSerializeHelper.XmlSerialize<HotkeyModel>(hotkeyModel);
  849. string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Hotkey.xml";
  850. if (!FileOperationHelper.WriteStringToFile(hotkeyModelXml, filePath, FileMode.Create))
  851. {
  852. MessageBox.Show(PdnResources.GetString("Menu.Failedtosaveshortcutkeyinformation.text"));
  853. }
  854. }
  855. /// <summary>
  856. /// 删除快捷键
  857. /// </summary>
  858. /// <param name="sender"></param>
  859. /// <param name="e"></param>
  860. private void button7_Click(object sender, EventArgs e)
  861. {
  862. //TreeNode node = this.treeViewRight.SelectedNode;
  863. if (!this.label1.Text.Equals(PdnResources.GetString("Menu.arenotmaintained.text")) && !this.label1.Text.Equals(""))
  864. {
  865. HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.label1.Text));
  866. if (item == null)
  867. return;
  868. if (MessageBox.Show(PdnResources.GetString("Menu.suretodeletethesho.text")+"?", PdnResources.GetString("Menu.suredeletit.Text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.OK)
  869. {
  870. if (item != null && item.HotKeys == this.label1.Text)
  871. {
  872. foreach (ListViewItem item22 in listView2.Items)
  873. {
  874. if (item22.Tag.ToString().Equals(item.HotKeys))
  875. {
  876. listView2.Items.Remove(item22);
  877. break;
  878. }
  879. }
  880. Startup.instance.hotkeyModel.items.Remove(item);
  881. ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
  882. if (menu != null && menu.Length > 0)
  883. {
  884. ((PdnMenuItem)menu[0]).resetShortcutKeys("");
  885. }
  886. SaveShortcutKeys();
  887. this.label1.Text = PdnResources.GetString("Menu.arenotmaintained.text");
  888. return;
  889. }
  890. }
  891. }
  892. //<<- //#18266
  893. //TreeNode node = this.treeViewRight.SelectedNode;
  894. //if (node != null)
  895. //{
  896. // if (MessageBox.Show("确认删除快捷键吗,删除后不可恢复?", "确定", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.OK)
  897. // {
  898. // int menuId = (int)this.treeViewRight.SelectedNode.Tag;
  899. // HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
  900. // if (item != null && item.HotKeys == this.label1.Text)
  901. // {
  902. // foreach (ListViewItem item22 in listView2.Items)
  903. // {
  904. // if (item22.Tag.ToString().Equals(item.HotKeys))
  905. // {
  906. // listView2.Items.Remove(item22);
  907. // break;
  908. // }
  909. // }
  910. // Startup.instance.hotkeyModel.items.Remove(item);
  911. // ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
  912. // if (menu != null && menu.Length > 0)
  913. // {
  914. // ((PdnMenuItem)menu[0]).resetShortcutKeys("");
  915. // }
  916. // SaveShortcutKeys();
  917. // this.label1.Text = "暂未维护快捷键";
  918. // return;
  919. // }
  920. // }
  921. //}
  922. //if (this.listView2.SelectedItems.Count > 0)
  923. //{
  924. // foreach (ListViewItem item1 in listView2.SelectedItems)
  925. // {
  926. // HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys == item1.Tag);
  927. // if (item != null)
  928. // {
  929. // listView2.Items.Remove(item1);
  930. // Startup.instance.hotkeyModel.items.Remove(item);
  931. // ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
  932. // if (menu != null && menu.Length > 0)
  933. // {
  934. // ((PdnMenuItem)menu[0]).resetShortcutKeys("");
  935. // }
  936. // SaveShortcutKeys();
  937. // this.label1.Text = "暂未维护快捷键";
  938. // break;
  939. // }
  940. // }
  941. //}
  942. }
  943. /// <summary>
  944. /// 导出配置
  945. /// </summary>
  946. /// <returns></returns>
  947. public void ExportToolbarXml()
  948. {
  949. using (SaveFileDialog saveFileDialog = new SaveFileDialog())
  950. {
  951. saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  952. saveFileDialog.Filter = "Xml(*.xml)|*.xml";
  953. saveFileDialog.DefaultExt = "xml";
  954. saveFileDialog.FilterIndex = 1;
  955. saveFileDialog.CheckFileExists = false;
  956. saveFileDialog.AddExtension = true;
  957. saveFileDialog.FileName = "Hotkey";
  958. if (saveFileDialog.ShowDialog() == DialogResult.OK)
  959. {
  960. string filePath = saveFileDialog.FileName;
  961. string toolbarXml = XmlSerializeHelper.XmlSerialize<HotkeyModel>(Startup.instance.hotkeyModel);
  962. if (FileOperationHelper.WriteStringToFile(toolbarXml, filePath, FileMode.Create))
  963. MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeysuccessfully.text"));
  964. else
  965. MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeyconfigurationfilefailedtosave.text"));
  966. }
  967. }
  968. }
  969. /// <summary>
  970. /// 导入配置
  971. /// </summary>
  972. /// <returns></returns>
  973. public void ImportToolbarXml()
  974. {
  975. using (var openFileDialog = new OpenFileDialog { Filter = "*.xml|*.xml" })
  976. {
  977. if (openFileDialog.ShowDialog() == DialogResult.OK)
  978. {
  979. using (Stream shortKeyStream = System.IO.File.OpenRead(openFileDialog.FileName))
  980. {
  981. StreamReader sr = new StreamReader(shortKeyStream);
  982. string xmlNotes = sr.ReadToEnd();
  983. HotkeyModel toolbarXml = XmlSerializeHelper.DESerializer<HotkeyModel>(xmlNotes);
  984. if (toolbarXml.items.Count > 0)
  985. {
  986. try
  987. {
  988. Startup.instance.hotkeyModel = toolbarXml;
  989. this.hotkeyModel = toolbarXml;
  990. this.listView2.Items.Clear();
  991. this.listView2.BeginUpdate();
  992. foreach (HotkeyModel.Item s in toolbarXml.items)
  993. {
  994. var lv = new ListViewItem();
  995. lv.Tag = s.HotKeys;
  996. lv.Text = "1";
  997. lv.SubItems.Add(s.MenuName);
  998. lv.SubItems.Add(s.HotKeys);
  999. lv.SubItems.Add("");
  1000. this.listView2.Items.Add(lv);
  1001. ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(s.Description, true);
  1002. if (menu != null && menu.Length > 0)
  1003. {
  1004. ((PdnMenuItem)menu[0]).resetShortcutKeys(s.HotKeys);
  1005. }
  1006. }
  1007. this.listView2.EndUpdate();
  1008. SaveShortcutKeys();
  1009. MessageBox.Show(PdnResources.GetString("Menu.Shortcutprofileimportedsuccessfully.text"));
  1010. }
  1011. catch(Exception)
  1012. {
  1013. MessageBox.Show(PdnResources.GetString("Menu.Theshortcutconfigurationfileimportfailed.text"));
  1014. }
  1015. }
  1016. else
  1017. {
  1018. MessageBox.Show(PdnResources.GetString("Menu.onfiguratiofilesavedconfiguratio.text"));
  1019. }
  1020. }
  1021. }
  1022. }
  1023. }
  1024. }
  1025. }