【问题标题】:Using mouse click event to get ListViewItem text使用鼠标单击事件获取 ListViewItem 文本
【发布时间】:2014-12-04 07:39:38
【问题描述】:

我想使用 listview 来填充数据,然后使用 mouseclick 事件来填充一些文本框的数据。我在msdn中查了一个例子:

ListViewItem theClickedOne = listView1.GetItemAt(e.X, e.Y);
ListViewItem theClickedtwo = listView1.FocusedItem;
if (theClickedOne != null)
{
    MessageBox.Show(theClickedtwo.ToString());
    //do your thing here.
    //there is a reference to the listview item we clicked on
    //in our theClickedOne variable.
} 

但我想不出一种方法来使用它来区分我使用的 listviewitems,因为我的程序中的第一个 Column 是相同的,它只会给我一个带有它的名称的字符串(第一个 Column)。我希望有类似于下一个示例的内容,但用于树视图。

void treeView1_NodeMouseClick(Object sender, TreeNodeMouseClickEventArgs e)
{
    MessageBox.Show(e.Node.Text);
}

【问题讨论】:

  • 在区分UI元素时,我通常会设置元素的Tag属性。看看那个。
  • “我想要一些类似于下一个示例的东西,但用于树视图。” - 什么?您想使用ListView 控件还是TreeView 来执行此操作?你的大部分帖子,直到最后一个声明,似乎都在说ListView
  • 我知道,在我的代码中,我还使用了 treeview 和 mouseclick 事件,我更容易了解如何使用它和识别字符串。我认为 listview 将是相同的,但它是不同的。
  • 除了标签之外,您还可以添加子项并使用它们的文本;它们仅在 Veew=Details 模式下可见..

标签: c# winforms listview


【解决方案1】:

当填充ListView 时,设置项目的Tag 属性,例如

newItem.Tag = "Item 1";

Tag 属性的类型为object,因此您可以在此处使用任何您想要的东西来标识该项目。处理鼠标单击事件时,只需再次检查 Tag 值:

if((string)(clickedItem.Tag) == "Item 1")
{
    // do stuff for this specific item.
}

【讨论】:

  • 我使用标签将其作为指向类的指针传递,如下所示:Class p=(Class)(theClickedtwo.Tag);,效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
相关资源
最近更新 更多