【问题标题】:Edit Items in a ListBox编辑列表框中的项目
【发布时间】:2015-12-22 17:20:31
【问题描述】:

我正在使用 WinForms 创建一个程序,以便用户可以将信息输入到一个表单上的文本框中,然后将这些信息保存到另一个表单上的列表框中。我希望能够通过单击按钮打开原始表单来编辑保存在列表框中的项目。真的很挣扎,因为我想不出代码,而且似乎找不到解决方案。 我的代码:

private void btnAdd_Click(object sender, EventArgs e)
    {
        RoomDisplayForm newRoomDisplayForm = new RoomDisplayForm();
        newRoomDisplayForm.ShowDialog();
        if(newRoomDisplayForm.DialogResult == DialogResult.OK)
        {
            listBoxRooms.Items.Add(newRoomDisplayForm.value);
        }
        newRoomDisplayForm.Close();
    }

    private void btnRemove_Click(object sender, EventArgs e)
    {
        this.listBoxRooms.Items.RemoveAt(this.listBoxRooms.SelectedIndex);
    }

    private void btnEdit_Click(object sender, EventArgs e)
    {

    }

所以我有一个添加和删除按钮,它可以完美地工作,只需要一个编辑按钮的解决方案。

提前致谢

【问题讨论】:

  • 既然您可以使用选定的索引删除一个项目,您是否尝试过使用相同的索引来获取选定的列表项?假设 RoomDisplayForm.value 包含您需要的所有信息,您应该能够使用返回的对象然后填充表单?

标签: c# winforms listbox


【解决方案1】:

我猜 newRoomDisplayForm.value 是表单内的属性或公共成员。你只需要这样做:

private void btnEdit_Click(object sender, EventArgs e)
{
   if(listBoxRooms.SelectedIndex < 0) return;

   var tmpValue = listBoxRooms.Items[listBoxRooms.SelectedIndex].ToString();
   RoomDisplayForm newRoomDisplayForm = new RoomDisplayForm();
   newRoomDisplayForm.value = tmpValue;
   newRoomDisplayForm.ShowDialog();

   //TODO: inside "newRoomDisplayForm" set the value to the textbox
   // ie.: myValueTextBox.Text = this.value;

   if(newRoomDisplayForm.DialogResult == DialogResult.OK)
   {
      // replace the selected item with the new value
      listBoxRooms.Items[listBoxRooms.SelectedIndex] = newRoomDisplayForm.value;
   }
}

希望对你有帮助!

【讨论】:

  • 感谢您的帮助。我在 newRoomDisplayForm.value 行上有一个错误,说它是只读的,但我正在处理它。再次感谢
  • 确保 'newRoomDisplay' 中的 'value' 属性有一个设置器。示例:public string value { get { return this._value; } set { this._value = value; // use this._value for editing } } 在此处阅读有关属性的更多信息:dotnetperls.com/property
  • 是的,这是我遇到的错误。现在都解决了,谢谢你的帮助
  • 很高兴听到。如果您不介意,请将答案标记为正确,以便其他人从中受益。最好的!
【解决方案2】:

您可以简单地删除该特定位置的列表项,创建一个新项并再次添加它。这是一种替代品。

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多