【问题标题】:How to add subitems to a specific row/index in a listView如何将子项添加到列表视图中的特定行/索引
【发布时间】:2017-07-19 09:30:34
【问题描述】:

我正在尝试制作一个音板程序,当按下播放按钮或按下可选设置的热键时播放用户添加的声音。我想在列表视图中的声音名称旁边显示热键。但我不知道如何添加/编辑仅包含所选行索引的子项。

我见过人们这样做:

 ListViewItem lvi = new ListViewItem();
 lvi.SubItems.Add("SubItem");
 listView1.Items.Add(lvi);

但这没有帮助,因为我无法为每一行创建不同的变量(我认为),因为它是由用户输入的。

这是我希望得到的结果:

这就是我到目前为止所得到的:

编辑:我已经弄清楚如何添加项目:

    private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
    {
        foreach (string fileName in openFileDialog1.FileNames)
        {
            var item = new ListViewItem(fileName);
            item.SubItems.Add("Alt+Shift+Numpad1");
            lvAudio.Items.Add(item);
            listBoxAudio.Items.Add(fileName);
        }
    }

但我仍然不确定稍后在程序运行时如何在所选行上添加/编辑热键。

【问题讨论】:

  • 嗨,也许这可以帮助你stackoverflow.com/questions/471859/…
  • DataGridView 更容易使用恕我直言(也没有数据库源)
  • @hammerthea 我试过这个:try { LSTDEDUCTION.SelectedItems[0].SubItems[1].Text = txtcarName.Text; LSTDEDUCTION.SelectedItems[0].SubItems[0].Text = txtcarBrand.Text; LSTDEDUCTION.SelectedItems[0].SubItems[2].Text = txtCarName.Text; } catch{} 但它不起作用。如果我删除 try-catch 我会得到 System.ArgumentOutOfRangeException: 'InvalidArgument=Value of '0' is not valid for 'index'.'
  • 你总是应该测试你想要访问的索引。如果它不存在,请添加它。不要滥用 try/catch 来进行您期望失败的“碰撞测试”! - 为什么你认为你不能写..Subitems.Add(textbox.Text)???
  • @Taw 我已经编辑了帖子

标签: c# .net winforms listview


【解决方案1】:

为了访问项目和子项目,请将它们视为集合并使用它们的索引来获取它们:

if (lvAudio.SelectedItems.Count > 0) 
{
      var file = lvAudio.SelectedItems[0];
      if(file.SubItems.Count > 1)
      {
          var shortcut = file.SubItems[1];
          shortcut.Text = "New Shortcut";
      }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 2014-01-06
    • 2017-09-28
    相关资源
    最近更新 更多