我在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;
  }
}

请注意,此代码段检查第二列是否悬停,根据需要进行调整。

08-15 21:03