/// <summary> /// 項目編集用コントロールを表示する /// </summary> /// <param name="e">項目編集前イベントのパラメータ</param> private void ShowEditControl(QueryListViewItemEditEventArgs e) { // 項目編集なしの場合は何もしない if (e.Type == ItemEditType.None) { return; } _editingRowIndex = e.Row; _editingColumnIndex = e.Column; ListViewItem item = Items[e.Row]; ListViewItem.ListViewSubItem subItem = item.SubItems[e.Column]; // 項目編集用コントロールを表示する switch (e.Type) { case ItemEditType.Bool: // 編集用コントロールを表示せず真偽値を反転させる InvertFlag(e.Flag); break; case ItemEditType.Text: ShowEditTextBox(e.Text, new Point(subItem.Bounds.Left, subItem.Bounds.Top), new Size(Columns[e.Column].Width, subItem.Bounds.Height)); break; case ItemEditType.List: ShowEditComboBox(e.Items, e.Index, new Point(subItem.Bounds.Left, subItem.Bounds.Top), new Size(Columns[e.Column].Width, subItem.Bounds.Height), e.DropDownWidth); break; } }
/// <summary> /// マウスダブルクリック時の処理 /// </summary> protected override void OnMouseDoubleClick(MouseEventArgs e) { base.OnMouseDoubleClick(e); // クリック位置が項目の上でなければ何もしない ListViewHitTestInfo ht = HitTest(e.X, e.Y); if (ht.SubItem == null) { return; } int rowIndex = ht.Item.Index; int columnIndex = ht.Item.SubItems.IndexOf(ht.SubItem); // 編集項目の種類を問い合わせる QueryListViewItemEditEventArgs qe = new QueryListViewItemEditEventArgs(rowIndex, columnIndex); QueryItemEdit?.Invoke(this, qe); // 編集用のコントロールを表示する ShowEditControl(qe); }