【问题标题】:How to edit items in a listview如何在列表视图中编辑项目
【发布时间】:2017-06-18 23:12:00
【问题描述】:

我希望能够编辑已添加到列表视图中的项目。

列表视图项是通过文本框、日期时间选择器和组合框添加的。

列表视图有三列。我想要的是:当我单击列表视图项目时,(列表视图选择所有列)然后单击编辑按钮,然后将文本框替换为第一列,将 datetimepicker 替换为第 2 列的日期,并且组合框替换为第 3 列。

然后我可以编辑文本框、日期或组合框项,当我单击保存按钮时,列表视图项会更新。

【问题讨论】:

  • ListView 仅支持编辑 Item 的 Text,不支持编辑任何 Subitems。要编辑这些,您需要对它们编写合适的覆盖编辑控件..
  • 我该怎么做?
  • 您可能想阅读this post

标签: c# listview edit


【解决方案1】:

由于您想使用单独的编辑控件和按钮进行更新,因此无需使用控件覆盖列表视图子项。

这是从第一个选定项目加载控件并更新ListView 中的Item 的示例代码:

    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();
        }
    }

注意SubItems[0].TextItems[0].Text 相同。

另请注意,代码假定所有项目都具有所有三个字段并且它们的值都是有效的,即转换和查找将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2021-05-22
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多