예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        /// <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);
        }