2017-06-18 14 views
1

私は自分のリストビューに追加したアイテムを編集できます。リストビュー内のアイテムを編集する方法

リストビューの項目は、テキストボックス、datetimepicker、およびコンボボックスで追加されました。

リストビューには3つの列があります。私が欲しいのは、リストビュー項目をクリックすると(listviewはすべての列を選択します)、編集ボタンをクリックすると、テキストボックスが列1に置き換えられ、datetimepickerが列2の日付に置き換えられ、コンボボックスはカラム3に置き換えられます。

次に、テキストボックス、日付、またはコンボボックスの項目を編集できます。保存ボタンをクリックすると、リストビュー項目が更新されます。

+0

ListViewは、アイテムのテキストの編集のみをサポートし、サブアイテムは編集できません。これらを編集するには、適切なオーバーレイ編集コントロールをコード化する必要があります。 – TaW

+0

どうすればよいですか? –

+0

あなたは[この記事]を読むことができます(https://stackoverflow.com/questions/471859/c-how-do-you-edit-items-and-subitems-in-a-listview) – TaW

答えて

0

個別の編集コントロールとボタンを使用して更新するため、リストビューのサブアイテムをコントロールにオーバーレイする必要はありません。 SubItems[0].TextItems[0].Textと同じであることを

private void lv_edit_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (lv_edit.SelectedIndices.Count > 0) 
     { 
      var lvi = lv_edit.SelectedItems[0]; 
      tb_col1.Text = lvi.SubItems[0].Text; 
      date_col2.Value = Convert.ToDateTime(lvi.SubItems[1].Text); 
      combo_col3.SelectedIndex = combo_col3.FindStringExact(lvi.SubItems[2].Text); 
     } 
    } 

    private void cb_updateItem_Click(object sender, EventArgs e) 
    { 
     if (lv_edit.SelectedIndices.Count > 0) 
     { 
      var lvi = lv_edit.SelectedItems[0]; 
      lvi.SubItems[0].Text = tb_col1.Text; 
      lvi.SubItems[1].Text = date_col2.Value.ToString("dddd, dd. MMMM yyyy"); 
      lvi.SubItems[2].Text = combo_col3.SelectedItem.ToString(); 
     } 
    } 

注:ここ

は1選択された項目からコントロールをロードするとListViewでそのItemを更新するために、サンプルコードです。

また、コードでは、すべての項目が3つのフィールドをすべて持ち、その値がすべて有効であること、つまり変換と検索が機能することを前提としています。

+0

ありがとう、それは働いた良い。 –

関連する問題