/// <summary> /// 項目編集用テキストボックスを表示する /// </summary> /// <param name="text">初期文字列</param> /// <param name="location">テキストボックスの位置</param> /// <param name="size">テキストボックスのサイズ</param> private void ShowEditTextBox(string text, Point location, Size size) { InlineTextBox textBox = new InlineTextBox(text, location, size, this); textBox.FinishEdit += OnTextFinishEdit; Controls.Add(textBox); }
/// <summary> /// 文字列編集時の処理 /// </summary> private void OnTextFinishEdit(object sender, CancelEventArgs e) { InlineTextBox textBox = sender as InlineTextBox; if (textBox == null) { return; } string text = textBox.Text; // イベントハンドラを削除する textBox.FinishEdit -= OnTextFinishEdit; // 編集用テキストボックスを削除する Controls.Remove(textBox); // キャンセルされれば項目を更新しない if (e.Cancel) { return; } ListViewItem item = Items[_editingRowIndex]; ListViewItem.ListViewSubItem subItem = item.SubItems[_editingColumnIndex]; ListViewItemEditEventArgs ie = new ListViewItemEditEventArgs(_editingRowIndex, _editingColumnIndex, textBox.Text); BeforeItemEdit?.Invoke(this, ie); // キャンセルされれば項目を更新しない if (ie.Cancel) { return; } // 項目の文字列を更新する subItem.Text = text; AfterItemEdit?.Invoke(this, ie); }