//------------------------------------------------------------------------- /// <summary> /// ショートカットキーを更新する。 /// Tagが一致する場合、現在のショートカットキーを割り当てる。 /// 表示のみ設定するため、メニューのショートカットの機能は使わない。 /// </summary> /// <param name="item">対象</param> private void update_shortcut_keys(ToolStripItem item) { // ToolStripMenuItem以外は無視 if (item is ToolStripMenuItem) { ToolStripMenuItem smi = (ToolStripMenuItem)item; foreach (ToolStripItem i in smi.DropDownItems) { // 子がいれば再帰で潜る update_shortcut_keys(i); } // Tagが一致するAssignに更新 if (smi.Tag != null) { KeyAssignList.Assign a = m_list.GetAssign(smi.Tag); if (a != null) { // smi.ShortcutKeysにはShortcutのみしか指定できないため、 // 表示の設定のみ行う smi.ShortcutKeys = Keys.None; // ショートカットキーとしてはなし smi.ShowShortcutKeys = true; smi.ShortcutKeyDisplayString = (a.Keys == Keys.None)? "": a.KeysString; } } } }
//------------------------------------------------------------------------- /// <summary> /// ListViewに追加する /// </summary> /// <param name="listview">対象のListView</param> /// <param name="i">キーアサイン</param> private void add_item(ListView listview, KeyAssignList.Assign i) { ListViewItem item = new ListViewItem(i.Group, 0); item.Tag = i; // item.ToolTipText = i.tool_tip; item.SubItems.Add(i.Name); item.SubItems.Add(i.KeysString); listview.Items.Add(item); }
//------------------------------------------------------------------------- /// <summary> /// 구축 /// </summary> /// <param name="assign">編集する키アサイン</param> public KeyAssignForm(KeyAssignList.Assign assign) { InitializeComponent(); m_assign = assign; label4.Text = assign.Name; label3.Text = assign.Group; label1.Text = assign.KeysString; // なにも없음でOKを押すと할당없음となる m_new_assign = Keys.None; }
//------------------------------------------------------------------------- /// <summary> /// 割り当て変更ボタンの更新 /// </summary> private void update_assign_button() { KeyAssignList.Assign i = get_selected_item(); if (i != null) { update_button(m_assign_button, true); update_button(m_remove_assign_button, (i.Keys == Keys.None)? false: true); } else { update_button(m_assign_button, false); update_button(m_remove_assign_button, false); } }
//------------------------------------------------------------------------- /// <summary> /// すべて初期値に戻す /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { // 初期値に戻す m_assign_list.DefaultAll(); foreach (ListViewItem i in m_list_view.Items) { KeyAssignList.Assign item = i.Tag as KeyAssignList.Assign; if (item == null) { continue; } i.SubItems[2].Text = item.KeysString; } }
//------------------------------------------------------------------------- /// <summary> /// キー割り当て解除 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { KeyAssignList.Assign i = get_selected_item(); if (i == null) { return; } // 割り当てなし i.Keys = Keys.None; // リストの更新 m_list_view.SelectedItems[0].SubItems[2].Text = i.KeysString; // ボタン状態の更新 update_assign_button(); }
//------------------------------------------------------------------------- /// <summary> /// キー割り当て変更 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { KeyAssignList.Assign i = get_selected_item(); if (i == null) { return; } using (KeyAssignForm dlg = new KeyAssignForm(i)){ if (dlg.ShowDialog(m_form) == DialogResult.OK) { i.Keys = dlg.NewAssignKey; // リストの更新 m_list_view.SelectedItems[0].SubItems[2].Text = i.KeysString; // ボタン状態の更新 update_assign_button(); } } }