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