我在ListView
中显示一组搜索结果。第一列包含搜索项,第二列显示匹配项的数目。
有上万行,因此ListView
处于虚拟模式。
我想更改此设置,以便第二列将匹配显示为超链接,就像aLinkLabel
显示链接一样;当用户单击该链接时,我希望收到一个事件,该事件将允许我在应用程序的其他位置打开匹配。
这有可能吗?如果有,怎么办?
编辑:我认为我还不够清楚-我希望在一个列中有多个超链接,就像在一个LinkLabel
中有多个超链接一样。
最佳答案
你可以很容易地伪造它。确保添加的列表视图项具有useitemstyleforsubitems=false,以便可以将子项的前景色设置为蓝色。实现mousemove事件,这样您就可以在“link”下面加下划线并更改光标。例如:
ListViewItem.ListViewSubItem mSelected;
private void listView1_MouseMove(object sender, MouseEventArgs e) {
var info = listView1.HitTest(e.Location);
if (info.SubItem == mSelected) return;
if (mSelected != null) mSelected.Font = listView1.Font;
mSelected = null;
listView1.Cursor = Cursors.Default;
if (info.SubItem != null && info.Item.SubItems[1] == info.SubItem) {
info.SubItem.Font = new Font(info.SubItem.Font, FontStyle.Underline);
listView1.Cursor = Cursors.Hand;
mSelected = info.SubItem;
}
}
请注意,此代码段检查第二列是否悬停,根据需要进行调整。