我可以在ListView的详细模式下显示链接吗?

Sim*_*mon 4 .net c# listview winforms

我正在显示一组搜索结果ListView.第一列包含搜索词,第二列显示匹配数.

有数万行,因此ListView处于虚拟模式.

我想改变它,以便第二列将匹配显示为超链接,与LinkLabel显示链接的方式相同; 当用户点击链接时,我希望收到一个活动,让我在我们的应用程序的其他地方打开比赛.

这是可能的,如果是的话,怎么样?

编辑:我不认为我已经足够明确的-我想在一列中的超链接,只是因为它是可能有多个在一个单一的超链接LinkLabel.

Han*_*ant 8

你可以很容易地伪造它.确保您添加的列表视图项具有UseItemStyleForSubItems = false,以便您可以将子项的ForeColor设置为蓝色.实现MouseMove事件,以便为"链接"加下划线并更改光标.例如:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

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