You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从另一窗体编辑ListView选中项,代码修改不生效该如何解决?

问题原因

你代码的核心错误是在edit_form中重新实例化了Form1,这个新创建的fs实例和你之前操作的、有选中项的原Form1窗口是完全独立的两个对象,新实例的listView1没有任何选中项,所以update_list方法里的判断条件不触发,自然不会修改内容。

解决方法

方案1:传递原Form1实例到edit_form

  1. 在Form1中打开edit_form时,将当前Form1实例绑定为edit_form的所有者:
// Form1中触发跳转编辑的代码
if (listView1.SelectedItems.Count > 0)
{
    edit_form editFrm = new edit_form();
    editFrm.Owner = this;
    // 可选:提前将选中项的原有值填充到edit_form的输入框,优化用户体验
    editFrm.serial_edit_txt.Text = listView1.SelectedItems[0].SubItems[0].Text;
    editFrm.Items_edit_box.SelectedItem = listView1.SelectedItems[0].SubItems[1].Text;
    // 剩余输入框同理赋值
    editFrm.ShowDialog();
}
  1. 修改edit_form中的提交代码,不要新建Form1实例,直接调用所有者实例的方法:
// edit_form中应用按钮的点击代码,删除原有new Form1()的逻辑
Form1 originFrm = this.Owner as Form1;
originFrm.update_list(serial_edit_txt.Text, Items_edit_box.SelectedItem.ToString(), quantity_edit_box.Text, units_edit_txt.Text, unit_edit_rate_txt.Text);
this.Close();

方案2:直接传递待编辑的ListView项(更稳定)

该方案不依赖Form1的选中状态,避免编辑过程中用户切换窗口取消选中导致的异常:

  1. 给edit_form添加一个公共属性,用于接收待编辑的ListView项:
// edit_form的类内部添加
public ListViewItem EditTargetItem { get; set; }
  1. Form1打开edit_form时直接传递选中项:
// Form1中触发跳转编辑的代码
if (listView1.SelectedItems.Count > 0)
{
    edit_form editFrm = new edit_form();
    editFrm.EditTargetItem = listView1.SelectedItems[0];
    // 同样可以提前填充输入框原有值
    editFrm.serial_edit_txt.Text = editFrm.EditTargetItem.SubItems[0].Text;
    // 剩余输入框同理赋值
    editFrm.ShowDialog();
}
  1. edit_form提交时直接修改传递过来的项即可,无需调用Form1的方法:
// edit_form中应用按钮的点击代码
EditTargetItem.SubItems[0].Text = serial_edit_txt.Text;
EditTargetItem.SubItems[1].Text = Items_edit_box.SelectedItem.ToString();
EditTargetItem.SubItems[2].Text = quantity_edit_box.Text;
EditTargetItem.SubItems[3].Text = units_edit_txt.Text;
EditTargetItem.SubItems[4].Text = unit_edit_rate_txt.Text;
this.Close();

内容的提问来源于stack exchange,提问作者rizzla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:57:02