c# - 双击 ListView 的一行时选择了哪一列
问题描述
首先,我不是在谈论单击列标题。我说的是选定行中的项目。
我有一个 ListView 并想双击username
选定行中的列并将用户名复制到剪贴板。
如果我双击password
所选行的列,请将密码复制到剪贴板。
显然我们可以知道选择了哪一行,但我不知道如何捕获在该行中双击了哪一列。
那可能吗?
人们想要代码,所以你去吧,记住只能选择单行,所以是的,0 会起作用:
ListViewItem lvi = this.contentListView.SelectedItems[0];
string pass = lvi.SubItems[5].Text;
解决方案
您可以使用 ListView HitTest方法。它返回一个ListViewHitTestInfo对象。
它的SubItem属性为您提供ListViewSubItem
单击的对象:
ColumnHeader
可以使用ListViewItem.SubItems.IndexOf()方法识别相应的对象。ListViewItem
和都SubItem
在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);
}
推荐阅读
- java - 如何测试到自定义注解的参数映射是否正确
- javascript - 单击时为数组创建新的未使用颜色的函数
- xamarin.forms - 添加外壳弹出项标题
- mysql - 获得最远的父母
- css - 如何使用基于 CSS 选择器的 anotehr 值覆盖 SASS 变量?
- javascript - 如何解决“无法读取未定义的属性”错误?
- python-3.x - python - 如何在python中将字符串元素与lambda相加?
- webpack - 如何修复 webpack 输出的图像 src 中的 [Object Module]?
- docusignapi - 网站上的docusign show 链接中是否有设施?
- haskell - 具有多个子字段的数据类型的实例 Eq