12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043 |
- using Resources;
- using SmartCoalApplication.Base.CommTool;
- using SmartCoalApplication.Base.SettingModel;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace SmartCoalApplication.Instrument.CustomInterface
- {
- internal class ShortKeys : UserControl
- {
- private AppWorkspace appWorkspace;
- /// <summary>
- /// 右侧树形菜单
- /// </summary>
- private ToolStripItemCollection collectionRight;
- /// <summary>
- /// 设置热键的标记
- /// </summary>
- private bool setHotKey = false;
- /// <summary>
- /// 为当前菜单设置的热键的list
- /// </summary>
- private List<string> hotKeys = new List<string>();
- private Panel panel1;
- private GroupBox groupBox3;
- private Label label1;
- private Button button7;
- private GroupBox groupBox4;
- private Label label3;
- private TextBox textBox1;
- private Button button8;
- private GroupBox groupBox5;
- private Label label2;
- private GroupBox groupBox7;
- private TreeView treeViewRight;
- private ListView listView2;
- private GroupBox groupBox6;
- private HotkeyModel hotkeyModel = Program.instance.hotkeyModel;
- private string txtPath = Application.StartupPath + "\\Config\\" + Program.instance.SettingPrefix + "\\ModuleConfig.txt";
- private string[] menuIdArr;
- public ShortKeys(AppWorkspace appWorkspace)
- {
- this.appWorkspace = appWorkspace;
- InitializeComponent();
- InitializeLanguageText();
- InitVisibleMenuId();
- InitializeTreeData();
- listView2.View = View.Details;
- listView2.Columns.Add("0", 0, HorizontalAlignment.Center);
- listView2.Columns.Add(PdnResources.GetString("Menu.tool.Generateshortcut.function.text"), 150, HorizontalAlignment.Center);
- listView2.Columns.Add(PdnResources.GetString("Menu.hotkey.text"), 200, HorizontalAlignment.Center);
- listView2.BeginUpdate();
- foreach (HotkeyModel.Item s in hotkeyModel.items)
- {
- var lv = new ListViewItem();
- lv.Tag = s.HotKeys;
- lv.Text = "1";
- lv.SubItems.Add(s.MenuName);
- lv.SubItems.Add(s.HotKeys);
- lv.SubItems.Add("");
- listView2.Items.Add(lv);
- }
- listView2.EndUpdate();
- }
- /// <summary>
- /// 获取txt文件中已保存的菜单可用id
- /// </summary>
- private void InitVisibleMenuId()
- {
- if (System.IO.File.Exists(txtPath))
- {
- string str = System.IO.File.ReadAllText(txtPath);
- if (str.IndexOf(',') != -1)
- {
- menuIdArr = str.Split(',');
- }
- else
- {
- if (!string.IsNullOrEmpty(str))
- {
- menuIdArr = new string[] { str };
- }
- }
- }
- }
- /// <summary>
- /// 初始化树形菜单数据
- /// </summary>
- private void InitializeTreeData()
- {
- this.collectionRight = this.appWorkspace.ToolBar.MainMenu.Items;
- TreeNode anime = new TreeNode(PdnResources.GetString("Menu.menu.Text"));
- this.RecursiveData(collectionRight, anime);
- anime.Expand();
- this.treeViewRight.Nodes.Add(anime);
- }
- /// <summary>
- /// 递归进行数据组织
- /// </summary>
- private void RecursiveData(ToolStripItemCollection collection, TreeNode anime)
- {
- //for (int i = 0; i < collection.Count; i++)
- //{
- // //排除掉最近打开的文件,或者可以用数字id判断更准确
- // if (!collection[i].Name.Equals("OpenRecent") && !collection[i].Name.Equals("CameraSelection"))
- // {
- // if (collection[i].GetType() != typeof(ToolStripSeparator) && ((PdnMenuItem)collection[i]).CanShowInSenseShield)
- // {
- // TreeNode node = new TreeNode();
- // node.Name = collection[i].Name;
- // node.Text = collection[i].Text;
- // node.Tag = ((PdnMenuItem)collection[i]).MenuId;
- // anime.Nodes.Add(node);
- // RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, node);
- // }
- // }
- //}
- for (int i = 0; i < collection.Count; i++)
- {
- //排除掉最近打开的文件,或者可以用数字id判断更准确
- if (!collection[i].Name.Equals("OpenRecent") && !collection[i].Name.Equals("CameraSelection"))
- {
- TreeNode node = new TreeNode(/*collection[i].Text*/);
- if (collection[i].GetType() != typeof(ToolStripSeparator))
- {
- PdnMenuItem item = (PdnMenuItem)collection[i];
- if (!item.CanShowInSenseShield)
- continue;
- node.Tag = item.MenuId;
- if (menuIdArr != null && menuIdArr.Length > 0)
- {
- if (Array.IndexOf(menuIdArr, item.MenuId.ToString()) != -1)
- {
- node.Name = collection[i].Name;
- node.Text = collection[i].Text;
- node.Tag = ((PdnMenuItem)collection[i]).MenuId;
- node.Checked = true;
- }
- else
- {
- node.Checked = false;
- }
- }
- if (node.Checked)
- {
- anime.Nodes.Add(node);
- }
- if (collection[i].Name.Equals("OpenRecent") || collection[i].Name.Equals("CameraSelection"))
- continue;
- RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, node);
- }
- }
- }
- }
- #region 组件设计器生成的代码
- private void InitializeLanguageText()
- {
- this.groupBox3.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Theselectcutkey.text");
- this.button7.Text = PdnResources.GetString("Menu.Edit.Delete.Text");
- this.groupBox4.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Maintainshortcut.text");
- this.label3.Text = PdnResources.GetString("Menu.tool.Generateshortcut.ThehotkeorAlt:orF*.text");
- this.button8.Text = PdnResources.GetString("Menu.Setting.Text");
- this.groupBox5.Text = PdnResources.GetString("Menu.Thisshortcutkeyhasbeenappliedto.text");
- this.groupBox7.Text = PdnResources.GetString("Menu.Availablefunctions.text");
- this.groupBox6.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Listofallfortcutkeys.text");
- }
- /// <summary>
- /// 设计器支持所需的方法 - 不要修改
- /// 使用代码编辑器修改此方法的内容。
- /// </summary>
- private void InitializeComponent()
- {
- this.panel1 = new System.Windows.Forms.Panel();
- this.groupBox3 = new System.Windows.Forms.GroupBox();
- this.label1 = new System.Windows.Forms.Label();
- this.button7 = new System.Windows.Forms.Button();
- this.groupBox4 = new System.Windows.Forms.GroupBox();
- this.label3 = new System.Windows.Forms.Label();
- this.textBox1 = new System.Windows.Forms.TextBox();
- this.button8 = new System.Windows.Forms.Button();
- this.groupBox5 = new System.Windows.Forms.GroupBox();
- this.label2 = new System.Windows.Forms.Label();
- this.groupBox7 = new System.Windows.Forms.GroupBox();
- this.treeViewRight = new System.Windows.Forms.TreeView();
- this.listView2 = new System.Windows.Forms.ListView();
- this.groupBox6 = new System.Windows.Forms.GroupBox();
- this.panel1.SuspendLayout();
- this.groupBox3.SuspendLayout();
- this.groupBox4.SuspendLayout();
- this.groupBox5.SuspendLayout();
- this.groupBox7.SuspendLayout();
- this.SuspendLayout();
- //
- // panel1
- //
- this.panel1.Controls.Add(this.groupBox3);
- this.panel1.Controls.Add(this.groupBox4);
- this.panel1.Controls.Add(this.groupBox5);
- this.panel1.Controls.Add(this.groupBox7);
- this.panel1.Controls.Add(this.groupBox6);
- this.panel1.Location = new System.Drawing.Point(0, 0);
- this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(623, 398);
- this.panel1.TabIndex = 0;
- //
- // groupBox3
- //
- this.groupBox3.Controls.Add(this.label1);
- this.groupBox3.Controls.Add(this.button7);
- this.groupBox3.Location = new System.Drawing.Point(0, 3);
- this.groupBox3.Margin = new System.Windows.Forms.Padding(0);
- this.groupBox3.Name = "groupBox3";
- this.groupBox3.Size = new System.Drawing.Size(361, 58);
- this.groupBox3.TabIndex = 9;
- this.groupBox3.TabStop = false;
- this.groupBox3.Text = "所选功能快捷键";
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(9, 29);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(0, 12);
- this.label1.TabIndex = 1;
- //
- // button7
- //
- this.button7.Location = new System.Drawing.Point(267, 20);
- this.button7.Name = "button7";
- this.button7.Size = new System.Drawing.Size(75, 23);
- this.button7.TabIndex = 0;
- this.button7.Text = "删除";
- this.button7.UseVisualStyleBackColor = true;
- this.button7.Click += button7_Click;
- //
- // groupBox4
- //
- this.groupBox4.Controls.Add(this.label3);
- this.groupBox4.Controls.Add(this.textBox1);
- this.groupBox4.Controls.Add(this.button8);
- this.groupBox4.Location = new System.Drawing.Point(0, 67);
- this.groupBox4.Name = "groupBox4";
- this.groupBox4.Size = new System.Drawing.Size(361, 76);
- this.groupBox4.TabIndex = 10;
- this.groupBox4.TabStop = false;
- this.groupBox4.Text = "维护快捷键";
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(9, 50);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(293, 12);
- this.label3.TabIndex = 2;
- this.label3.Text = "快捷键必须包含Ctrl或Alt; 或F*";
- //
- // textBox1
- //
- this.textBox1.Location = new System.Drawing.Point(9, 22);
- this.textBox1.Name = "textBox1";
- this.textBox1.ReadOnly = true;
- this.textBox1.Size = new System.Drawing.Size(252, 21);
- this.textBox1.TabIndex = 1;
- this.textBox1.KeyUp += textBox1_KeyUp;
- this.textBox1.KeyDown += textBox1_KeyDown;
- //
- // button8
- //
- this.button8.Enabled = false;
- this.button8.Location = new System.Drawing.Point(267, 22);
- this.button8.Name = "button8";
- this.button8.Size = new System.Drawing.Size(75, 23);
- this.button8.TabIndex = 0;
- this.button8.Text = "设置";
- this.button8.UseVisualStyleBackColor = true;
- this.button8.Click += Button8_Click;
- //
- // groupBox5
- //
- this.groupBox5.Controls.Add(this.label2);
- this.groupBox5.Location = new System.Drawing.Point(0, 149);
- this.groupBox5.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
- this.groupBox5.Name = "groupBox5";
- this.groupBox5.Size = new System.Drawing.Size(361, 58);
- this.groupBox5.TabIndex = 11;
- this.groupBox5.TabStop = false;
- this.groupBox5.Text = "此快捷键已应用至";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(9, 29);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(0, 12);
- this.label2.TabIndex = 0;
- //
- // groupBox7
- //
- this.groupBox7.Controls.Add(this.treeViewRight);
- this.groupBox7.Location = new System.Drawing.Point(367, 0);
- this.groupBox7.Name = "groupBox7";
- this.groupBox7.Size = new System.Drawing.Size(256, 401);
- this.groupBox7.TabIndex = 13;
- this.groupBox7.TabStop = false;
- this.groupBox7.Text = "可用功能";
- //
- // treeView1
- //
- this.treeViewRight.Location = new System.Drawing.Point(7, 20);
- this.treeViewRight.Name = "treeView1";
- this.treeViewRight.Size = new System.Drawing.Size(243, 372);
- this.treeViewRight.TabIndex = 0;
- this.treeViewRight.NodeMouseClick += treeView1_NodeMouseClick;
- this.treeViewRight.HideSelection = false;
- this.treeViewRight.DrawMode = TreeViewDrawMode.OwnerDrawText;
- this.treeViewRight.DrawNode += new DrawTreeNodeEventHandler(this.treeViewRight_DrawNode);
- //
- // groupBox6
- //
- this.groupBox6.Controls.Add(this.listView2);
- this.groupBox6.Location = new System.Drawing.Point(0, 211);
- this.groupBox6.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
- this.groupBox6.Name = "groupBox6";
- this.groupBox6.Size = new System.Drawing.Size(361, 187);
- this.groupBox6.TabIndex = 12;
- this.groupBox6.TabStop = false;
- this.groupBox6.Text = "所有已指派快捷键的功能列表";
- //
- // listView2
- //
- this.listView2.FullRowSelect = true;
- this.listView2.HideSelection = false;
- this.listView2.Location = new System.Drawing.Point(6, 20);
- this.listView2.MultiSelect = false;
- this.listView2.Name = "listView2";
- this.listView2.Size = new System.Drawing.Size(355/*382*/, 181/*441*/);
- this.listView2.TabIndex = 24;
- this.listView2.UseCompatibleStateImageBehavior = false;
- this.listView2.ItemSelectionChanged += ListView2_ItemSelectionChanged;
- //
- // ShortKeys
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.panel1);
- this.Margin = new System.Windows.Forms.Padding(0);
- this.Name = "ShortKeys";
- this.Size = new System.Drawing.Size(623, 398);
- this.panel1.ResumeLayout(false);
- this.groupBox3.ResumeLayout(false);
- this.groupBox3.PerformLayout();
- this.groupBox4.ResumeLayout(false);
- this.groupBox4.PerformLayout();
- this.groupBox5.ResumeLayout(false);
- this.groupBox5.PerformLayout();
- this.groupBox7.ResumeLayout(false);
- this.ResumeLayout(false);
- }
- /// <summary>
- /// 自定义绘制
- /// 参考https://www.cnblogs.com/JiYF/p/6693503.html
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void treeViewRight_DrawNode(object sender, DrawTreeNodeEventArgs e)
- {
- /**用默认颜色
- e.DrawDefault = true;
- return;
- **/
- //以下是自定义颜色
- if ((e.State & TreeNodeStates.Selected) != 0)
- {
- //演示为蓝(绿)底白字
- e.Graphics.FillRectangle(SystemBrushes.Highlight/*Brushes.Green*/, e.Node.Bounds);
- Font nodeFont = e.Node.NodeFont;
- if (nodeFont == null) nodeFont = ((TreeView)sender).Font;
- e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, Rectangle.Inflate(new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width + 2, e.Bounds.Height), 0, 0));
- }
- else
- {
- e.DrawDefault = true;
- }
- if ((e.State & TreeNodeStates.Focused) != 0)
- {
- using (Pen focusPen = new Pen(Color.Black))
- {
- focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
- Rectangle focusBounds = e.Node.Bounds;
- focusBounds.Size = new Size(focusBounds.Width - 1,
- focusBounds.Height - 1);
- e.Graphics.DrawRectangle(focusPen, focusBounds);
- }
- }
- }
- /// <summary>
- /// 设置
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Button8_Click(object sender, EventArgs e)
- {
- try
- {
- //throw new NotImplementedException();
- TreeNode node = this.treeViewRight.SelectedNode;
- if (node != null)
- {
- //判断快捷键是否已经被使用
- HotkeyModel.Item isExsit = Program.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.textBox1.Text));
- if (isExsit != null)
- {
- MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeysarealreadyiuse.text"));
- return;
- }
- int menuId = (int)this.treeViewRight.SelectedNode.Tag;
- string desc = this.treeViewRight.SelectedNode.Name;
- string name = this.treeViewRight.SelectedNode.Text;
- //设置快捷键
- ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(desc, true);
- if (menu != null && menu.Length > 0)
- {
- ((PdnMenuItem)menu[0]).resetShortcutKeys(this.textBox1.Text);
- }
- SaveShortcutKeys();
- //处理界面数据
- HotkeyModel.Item item = Program.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
- if (item != null)
- {
- foreach (ListViewItem item1 in listView2.Items)
- {
- if (item1.SubItems[2].Text.Equals(item.HotKeys))
- {
- item1.SubItems[2].Text = this.textBox1.Text;
- break;
- }
- }
- item.HotKeys = this.textBox1.Text;
- }
- else
- {
- HotkeyModel.Item item1 = new HotkeyModel.Item();
- item1.MenuId = menuId;
- item1.MenuName = name;
- item1.Description = desc;
- item1.HotKeys = this.textBox1.Text;
- Program.instance.hotkeyModel.items.Add(item1);
- this.hotkeyModel = Program.instance.hotkeyModel;
- SaveShortcutKeys();
- var lv = new ListViewItem();
- lv.Tag = this.textBox1.Text;
- lv.Text = "1";
- lv.SubItems.Add(name);
- lv.SubItems.Add(this.textBox1.Text);
- lv.SubItems.Add("");
- listView2.Items.Add(lv);
- }
- }
- }
- catch (Exception)
- {
- MessageBox.Show(PdnResources.GetString("Menu.conformtotherulespleasecheck.text") + "!");
- }
- }
- private void ListView2_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
- {
- //throw new NotImplementedException();
- listView2.FullRowSelect = true;
- if (this.listView2.SelectedItems.Count > 0)
- {
- foreach (ListViewItem item in listView2.Items)
- {
- if (item.Selected)
- {
- this.label1.Text = item.Tag as string;
- break;
- }
- }
- }
- }
- #endregion
- /// <summary>
- /// 按键抬起事件,需判断是否合法
- /// 快捷键必须包含ctrl或alt;或back、delete、esc、F*
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void textBox1_KeyUp(object sender, KeyEventArgs e)
- {
- setHotKey = false;
- //检测合法性
- //e.Handled = true;
- e.SuppressKeyPress = true;
- //检测是否被占用
- HotkeyModel.Item item = Program.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.textBox1.Text));
- if (item != null)
- {
- this.label2.Text = item.MenuName;
- this.button8.Enabled = false;
- }
- else
- {
- this.label2.Text = PdnResources.GetString("Menu.Nofunctionaluse.text");
- List<List<Keys>> keysAll = new List<List<Keys>>()
- {
- new List<Keys>() { Keys.Alt, Keys.D0 },
- new List<Keys>() { Keys.Alt, Keys.D1},
- new List<Keys>() { Keys.Alt, Keys.D2},
- new List<Keys>() { Keys.Alt, Keys.D3},
- new List<Keys>() { Keys.Alt, Keys.D4},
- new List<Keys>() { Keys.Alt, Keys.D5},
- new List<Keys>() { Keys.Alt, Keys.D6},
- new List<Keys>() { Keys.Alt, Keys.D7},
- new List<Keys>() { Keys.Alt, Keys.D8},
- new List<Keys>() { Keys.Alt, Keys.D9},
- new List<Keys>() { Keys.Alt, Keys.Back},
- new List<Keys>() { Keys.Alt, Keys.Down},
- new List<Keys>() { Keys.Alt, Keys.F1},
- new List<Keys>() { Keys.Alt, Keys.F10},
- new List<Keys>() { Keys.Alt, Keys.F11},
- new List<Keys>() { Keys.Alt, Keys.F12},
- new List<Keys>() { Keys.Alt, Keys.F2},
- new List<Keys>() { Keys.Alt, Keys.F3},
- new List<Keys>() { Keys.Alt, Keys.F4},
- new List<Keys>() { Keys.Alt, Keys.F5},
- new List<Keys>() { Keys.Alt, Keys.F6},
- new List<Keys>() { Keys.Alt, Keys.F7},
- new List<Keys>() { Keys.Alt, Keys.F8},
- new List<Keys>() { Keys.Alt, Keys.F9},
- new List<Keys>() { Keys.Alt, Keys.Left},
- new List<Keys>() { Keys.Alt, Keys.Right},
- new List<Keys>() { Keys.Alt, Keys.Up},
- new List<Keys>() { Keys.Control, Keys.D0},
- new List<Keys>() { Keys.Control, Keys.D1},
- new List<Keys>() { Keys.Control, Keys.D2},
- new List<Keys>() { Keys.Control, Keys.D3},
- new List<Keys>() { Keys.Control, Keys.D4},
- new List<Keys>() { Keys.Control, Keys.D5},
- new List<Keys>() { Keys.Control, Keys.D6},
- new List<Keys>() { Keys.Control, Keys.D7},
- new List<Keys>() { Keys.Control, Keys.D8},
- new List<Keys>() { Keys.Control, Keys.D9},
- new List<Keys>() { Keys.Control, Keys.A},
- new List<Keys>() { Keys.Control, Keys.B},
- new List<Keys>() { Keys.Control, Keys.C},
- new List<Keys>() { Keys.Control, Keys.D},
- new List<Keys>() { Keys.Control, Keys.Delete},
- new List<Keys>() { Keys.Control, Keys.E},
- new List<Keys>() { Keys.Control, Keys.F},
- new List<Keys>() { Keys.Control, Keys.F1},
- new List<Keys>() { Keys.Control, Keys.F10},
- new List<Keys>() { Keys.Control, Keys.F11},
- new List<Keys>() { Keys.Control, Keys.F12},
- new List<Keys>() { Keys.Control, Keys.F2},
- new List<Keys>() { Keys.Control, Keys.F3},
- new List<Keys>() { Keys.Control, Keys.F4},
- new List<Keys>() { Keys.Control, Keys.F5},
- new List<Keys>() { Keys.Control, Keys.F6},
- new List<Keys>() { Keys.Control, Keys.F7},
- new List<Keys>() { Keys.Control, Keys.F8},
- new List<Keys>() { Keys.Control, Keys.F9},
- new List<Keys>() { Keys.Control, Keys.G},
- new List<Keys>() { Keys.Control, Keys.H},
- new List<Keys>() { Keys.Control, Keys.I},
- new List<Keys>() { Keys.Control, Keys.Insert},
- new List<Keys>() { Keys.Control, Keys.J},
- new List<Keys>() { Keys.Control, Keys.K},
- new List<Keys>() { Keys.Control, Keys.L},
- new List<Keys>() { Keys.Control, Keys.M},
- new List<Keys>() { Keys.Control, Keys.N},
- new List<Keys>() { Keys.Control, Keys.O},
- new List<Keys>() { Keys.Control, Keys.P},
- new List<Keys>() { Keys.Control, Keys.Q},
- new List<Keys>() { Keys.Control, Keys.R},
- new List<Keys>() { Keys.Control, Keys.S},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D0},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D1},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D2},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D3},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D4},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D5},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D6},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D7},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D8},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D9},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.A},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.B},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.C},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.E},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F1},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F10},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F11},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F12},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F2},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F3},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F4},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F5},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F6},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F7},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F8},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F9},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.G},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.H},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.I},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.J},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.K},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.L},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.M},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.N},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.O},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.P},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.Q},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.R},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.S},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.T},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.U},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.V},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.W},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.X},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.Y},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.Z},
- new List<Keys>() { Keys.Control, Keys.T},
- new List<Keys>() { Keys.Control, Keys.U},
- new List<Keys>() { Keys.Control, Keys.V},
- new List<Keys>() { Keys.Control, Keys.W},
- new List<Keys>() { Keys.Control, Keys.X},
- new List<Keys>() { Keys.Control, Keys.Y},
- new List<Keys>() { Keys.Control, Keys.Z},
- new List<Keys>() { Keys.Delete},
- new List<Keys>() { Keys.F1},
- new List<Keys>() { Keys.F10},
- new List<Keys>() { Keys.F11},
- new List<Keys>() { Keys.F12},
- new List<Keys>() { Keys.F2},
- new List<Keys>() { Keys.F3},
- new List<Keys>() { Keys.F4},
- new List<Keys>() { Keys.F5},
- new List<Keys>() { Keys.F6},
- new List<Keys>() { Keys.F7},
- new List<Keys>() { Keys.F8},
- new List<Keys>() { Keys.F9},
- new List<Keys>() { Keys.Insert},
- new List<Keys>() { Keys.None},
- new List<Keys>() { Keys.Shift | Keys.Delete},
- new List<Keys>() { Keys.Shift | Keys.F1},
- new List<Keys>() { Keys.Shift | Keys.F10},
- new List<Keys>() { Keys.Shift | Keys.F11},
- new List<Keys>() { Keys.Shift | Keys.F12},
- new List<Keys>() { Keys.Shift | Keys.F2},
- new List<Keys>() { Keys.Shift | Keys.F3},
- new List<Keys>() { Keys.Shift | Keys.F4},
- new List<Keys>() { Keys.Shift | Keys.F5},
- new List<Keys>() { Keys.Shift | Keys.F6},
- new List<Keys>() { Keys.Shift | Keys.F7},
- new List<Keys>() { Keys.Shift | Keys.F8},
- new List<Keys>() { Keys.Shift | Keys.F9},
- new List<Keys>() { Keys.Shift | Keys.Insert}
- };
- string itemHotKeys = this.textBox1.Text;
- List<List<Keys>> keysFound = new List<List<Keys>>();
- if (itemHotKeys != null && !itemHotKeys.Equals(""))
- {
- string[] keys = itemHotKeys.Trim().Split('+');
- Keys Key = Keys.None;
- //寻找匹配的按键组合
- int keyIndex = 0;
- foreach (string key in keys)
- {
- if (Key == Keys.None)
- {
- Key = (Keys)(Enum.Parse(typeof(Keys), key.Trim()));
- //寻找可能匹配的按键组合
- foreach (var itemList in keysAll)
- {
- if (itemList.Contains(Key) && itemList.IndexOf(Key) == keyIndex && itemList.Count == keys.Length)
- keysFound.Add(itemList);
- }
- }
- else
- {
- Key = (Keys)(Enum.Parse(typeof(Keys), key.Trim()));
- //删除不匹配的按键组合
- for (int i = keysFound.Count - 1; i >= 0; i--)
- {
- var itemList = keysFound[i];
- if (!itemList.Contains(Key) || itemList.IndexOf(Key) != keyIndex)
- keysFound.RemoveAt(i);
- }
- }
- keyIndex++;
- }
- //没有找到匹配的按键组合
- if (keysFound.Count != 1)
- {
- this.textBox1.Text = "";
- }
- }
- this.button8.Enabled = !this.textBox1.Text.Equals("");
- }
- }
- /// <summary>
- /// 维护快捷键的textbox的按键按下事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void textBox1_KeyDown(object sender, KeyEventArgs e)
- {
- if (!setHotKey)
- {
- setHotKey = true;
- this.textBox1.Text = "";
- this.hotKeys.Clear();
- }
- string keyString = e.KeyCode.ToString();
- if (keyString.Equals("ControlKey"))
- {
- keyString = "Control";
- }
- if (keyString.Equals("ShiftKey"))
- {
- keyString = "Shift";
- }
- if (keyString.Equals("Menu"))
- {
- keyString = "Alt";
- }
- if (setHotKey && !keyString.Equals("") && this.hotKeys.IndexOf(keyString) == -1)
- {
- this.hotKeys.Add(keyString);
- if (this.textBox1.Text.Equals(""))
- {
- this.textBox1.Text = keyString;
- }
- else
- {
- this.textBox1.Text += " + " + keyString;
- }
- }
- this.button8.Enabled = !this.textBox1.Text.Equals("");
- }
- private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
- {
- int menuId = (e.Node.Tag != null) ? (int)(e.Node.Tag) : 0;
- if (menuId > 0)
- {
- if (Program.instance.hotkeyModel != null
- && Program.instance.hotkeyModel.items != null
- && Program.instance.hotkeyModel.items.Count > 0)
- {
- HotkeyModel.Item item = Program.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
- if (item != null)
- {
- this.label1.Text = item.HotKeys;
- }
- else
- {
- this.label1.Text = PdnResources.GetString("Menu.arenotmaintained.text");
- }
- }
- }
- }
- /// <summary>
- /// 设置快捷键
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button8_MouseClick(object sender, MouseEventArgs e)
- {
- TreeNode node = this.treeViewRight.SelectedNode;
- if (node != null)
- {
- int menuId = (int)this.treeViewRight.SelectedNode.Tag;
- string desc = this.treeViewRight.SelectedNode.Name;
- string name = this.treeViewRight.SelectedNode.Text;
- HotkeyModel.Item item = Program.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
- if (item != null)
- {
- item.HotKeys = this.textBox1.Text;
- }
- else
- {
- HotkeyModel.Item item1 = new HotkeyModel.Item();
- item1.MenuId = menuId;
- item1.MenuName = name;
- item1.Description = desc;
- item1.HotKeys = this.textBox1.Text;
- Program.instance.hotkeyModel.items.Add(item1);
- }
- var lv = new ListViewItem();
- lv.Text = "1";
- lv.SubItems.Add(name);
- lv.SubItems.Add(this.textBox1.Text);
- lv.SubItems.Add("");
- listView2.Items.Add(lv);
- this.hotkeyModel = Program.instance.hotkeyModel;
- SaveShortcutKeys();
- }
- }
- /// <summary>
- /// 保存快捷键
- /// </summary>
- private void SaveShortcutKeys()
- {
- string hotkeyModelXml = XmlSerializeHelper.XmlSerialize<HotkeyModel>(hotkeyModel);
- string filePath = Application.StartupPath + "\\Config\\" + Program.instance.SettingPrefix + "\\Hotkey.xml";
- if (!FileOperationHelper.WriteStringToFile(hotkeyModelXml, filePath, FileMode.Create))
- {
- MessageBox.Show(PdnResources.GetString("Menu.Failedtosaveshortcutkeyinformation.text"));
- }
- }
- /// <summary>
- /// 删除快捷键
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button7_Click(object sender, EventArgs e)
- {
- //TreeNode node = this.treeViewRight.SelectedNode;
- if (!this.label1.Text.Equals(PdnResources.GetString("Menu.arenotmaintained.text")) && !this.label1.Text.Equals(""))
- {
- HotkeyModel.Item item = Program.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.label1.Text));
- if (item == null)
- return;
- if (MessageBox.Show(PdnResources.GetString("Menu.suretodeletethesho.text") + "?", PdnResources.GetString("Menu.suredeletit.Text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.OK)
- {
- if (item != null && item.HotKeys == this.label1.Text)
- {
- foreach (ListViewItem item22 in listView2.Items)
- {
- if (item22.Tag.ToString().Equals(item.HotKeys))
- {
- listView2.Items.Remove(item22);
- break;
- }
- }
- Program.instance.hotkeyModel.items.Remove(item);
- ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
- if (menu != null && menu.Length > 0)
- {
- ((PdnMenuItem)menu[0]).resetShortcutKeys("");
- }
- SaveShortcutKeys();
- this.label1.Text = PdnResources.GetString("Menu.arenotmaintained.text");
- return;
- }
- }
- }
- //<<- //#18266
- //TreeNode node = this.treeViewRight.SelectedNode;
- //if (node != null)
- //{
- // if (MessageBox.Show("确认删除快捷键吗,删除后不可恢复?", "确定", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.OK)
- // {
- // int menuId = (int)this.treeViewRight.SelectedNode.Tag;
- // HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
- // if (item != null && item.HotKeys == this.label1.Text)
- // {
- // foreach (ListViewItem item22 in listView2.Items)
- // {
- // if (item22.Tag.ToString().Equals(item.HotKeys))
- // {
- // listView2.Items.Remove(item22);
- // break;
- // }
- // }
- // Startup.instance.hotkeyModel.items.Remove(item);
- // ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
- // if (menu != null && menu.Length > 0)
- // {
- // ((PdnMenuItem)menu[0]).resetShortcutKeys("");
- // }
- // SaveShortcutKeys();
- // this.label1.Text = "暂未维护快捷键";
- // return;
- // }
- // }
- //}
- //if (this.listView2.SelectedItems.Count > 0)
- //{
- // foreach (ListViewItem item1 in listView2.SelectedItems)
- // {
- // HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys == item1.Tag);
- // if (item != null)
- // {
- // listView2.Items.Remove(item1);
- // Startup.instance.hotkeyModel.items.Remove(item);
- // ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
- // if (menu != null && menu.Length > 0)
- // {
- // ((PdnMenuItem)menu[0]).resetShortcutKeys("");
- // }
- // SaveShortcutKeys();
- // this.label1.Text = "暂未维护快捷键";
- // break;
- // }
- // }
- //}
- }
- /// <summary>
- /// 导出配置
- /// </summary>
- /// <returns></returns>
- public void ExportToolbarXml()
- {
- using (SaveFileDialog saveFileDialog = new SaveFileDialog())
- {
- saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
- saveFileDialog.Filter = "Xml(*.xml)|*.xml";
- saveFileDialog.DefaultExt = "xml";
- saveFileDialog.FilterIndex = 1;
- saveFileDialog.CheckFileExists = false;
- saveFileDialog.AddExtension = true;
- saveFileDialog.FileName = "Hotkey";
- if (saveFileDialog.ShowDialog() == DialogResult.OK)
- {
- string filePath = saveFileDialog.FileName;
- string toolbarXml = XmlSerializeHelper.XmlSerialize<HotkeyModel>(Program.instance.hotkeyModel);
- if (FileOperationHelper.WriteStringToFile(toolbarXml, filePath, FileMode.Create))
- MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeysuccessfully.text"));
- else
- MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeyconfigurationfilefailedtosave.text"));
- }
- }
- }
- /// <summary>
- /// 导入配置
- /// </summary>
- /// <returns></returns>
- public void ImportToolbarXml()
- {
- using (var openFileDialog = new OpenFileDialog { Filter = "*.xml|*.xml" })
- {
- if (openFileDialog.ShowDialog() == DialogResult.OK)
- {
- using (Stream shortKeyStream = System.IO.File.OpenRead(openFileDialog.FileName))
- {
- StreamReader sr = new StreamReader(shortKeyStream);
- string xmlNotes = sr.ReadToEnd();
- HotkeyModel toolbarXml = XmlSerializeHelper.DESerializer<HotkeyModel>(xmlNotes);
- if (toolbarXml.items.Count > 0)
- {
- try
- {
- Program.instance.hotkeyModel = toolbarXml;
- this.hotkeyModel = toolbarXml;
- this.listView2.Items.Clear();
- this.listView2.BeginUpdate();
- foreach (HotkeyModel.Item s in toolbarXml.items)
- {
- var lv = new ListViewItem();
- lv.Tag = s.HotKeys;
- lv.Text = "1";
- lv.SubItems.Add(s.MenuName);
- lv.SubItems.Add(s.HotKeys);
- lv.SubItems.Add("");
- this.listView2.Items.Add(lv);
- ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(s.Description, true);
- if (menu != null && menu.Length > 0)
- {
- ((PdnMenuItem)menu[0]).resetShortcutKeys(s.HotKeys);
- }
- }
- this.listView2.EndUpdate();
- SaveShortcutKeys();
- MessageBox.Show(PdnResources.GetString("Menu.Shortcutprofileimportedsuccessfully.text"));
- }
- catch (Exception)
- {
- MessageBox.Show(PdnResources.GetString("Menu.Theshortcutconfigurationfileimportfailed.text"));
- }
- }
- else
- {
- MessageBox.Show(PdnResources.GetString("Menu.onfiguratiofilesavedconfiguratio.text"));
- }
- }
- }
- }
- }
- }
- }
|