日期:2014-05-18  浏览次数:20836 次

winform双击ListView某行弹出窗体,关闭弹出窗体返回修改选中行的值
private void lvTags_DoubleClick(object sender, EventArgs e)
  {
  if (lvTags.Items.Count > 0)
  {
  TagsEditor myTags = new TagsEditor();
  int lvIndex = 0;
  foreach (ListViewItem viewItem in this.lvTags.Items)
  {
  if (viewItem.Selected)
  {
  myTags.TagName = viewItem.SubItems[0].Text;
  lvIndex = viewItem.ListView.SelectedIndices[0];

  }
  }
  if (myTags.ShowDialog() == DialogResult.OK)
  {
  lvTags.Items[lvIndex].Selected = true;
  lvTags.Items[lvIndex].SubItems[1].Text = myTags.StartHtml;
lvTags.Items[lvIndex].SubItems[2].Text = myTags.EndHtml; }
  }
   
  }

出现错误提示 InvalidArgument=“1”的值对于“index”无效!!!貌似是返回后没获取到选中行。请大大看看。

------解决方案--------------------
Items[lvIndex].SubItems[1],这里有两个问题,lvIndex是不是越界,SubItems是否越界
------解决方案--------------------
设个短点 DEBUG 走一下
------解决方案--------------------
你先判断一下有没有修改,如果修改了,就重新加载就行了