双击列表视图的行时选择了哪一列



首先,我不是在谈论单击列标题。 我说的是所选行中的项目.
我有一个 ListView,想要双击所选行中的username列并将用户名复制到剪贴板.
如果我双击所选行的password列,请将密码复制到剪贴板。

显然,我们可以知道选择了哪一行,但是我不知道如何捕获该行中双击的列.
这可能吗?

人们想要代码,所以在这里,请记住只能选择一行,所以是的,0 将起作用:

ListViewItem lvi = this.contentListView.SelectedItems[0];
string pass = lvi.SubItems[5].Text;

可以使用 ListView HitTest 方法。它返回一个 ListViewHitTestInfo 对象。
其 SubItem 属性为您提供单击ListViewSubItem对象:

可以使用 ListViewItem.SubItems.IndexOf(( 方法标识相应的ColumnHeader对象。ListViewItemSubItem都在ListViewHitTestInfo对象中引用。

private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
var hitInfo = listView1.HitTest(e.Location);
if (hitInfo.SubItem == null || string.IsNullOrEmpty(hitInfo.SubItem.Text)) return;
int subItemIndex = hitInfo.Item.SubItems.IndexOf(hitInfo.SubItem);
var column = listView1.Columns[subItemIndex];
// Do whatever you need to do with the SubItem text
string result = ProcessSubItemText(hitInfo.SubItem.Text, column);
Clipboard.SetText(result, TextDataFormat.UnicodeText);
}

最新更新