個別の編集コントロールとボタンを使用して更新するため、リストビューのサブアイテムをコントロールにオーバーレイする必要はありません。 SubItems[0].Text
がItems[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つのフィールドをすべて持ち、その値がすべて有効であること、つまり変換と検索が機能することを前提としています。
出典
2017-06-19 09:12:18
TaW
ListViewは、アイテムのテキストの編集のみをサポートし、サブアイテムは編集できません。これらを編集するには、適切なオーバーレイ編集コントロールをコード化する必要があります。 – TaW
どうすればよいですか? –
あなたは[この記事]を読むことができます(https://stackoverflow.com/questions/471859/c-how-do-you-edit-items-and-subitems-in-a-listview) – TaW