c# - 我可以在 ListView 的详细信息模式下显示链接吗?

标签 c# .net winforms listview

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

有几万行,所以 ListView 处于虚拟模式。

我想更改它,以便第二列将匹配项显示为超链接,与 LinkLabel 显示链接的方式相同;当用户单击链接时,我希望收到一个事件,让我可以在应用程序的其他地方打开匹配项。

这是否可能,如果可能,如何实现?

编辑:我认为我还不够清楚 - 我希望在单个列中有 多个 超链接,就像可以有 多个 超链接一样单个 LinkLabel

最佳答案

你可以很容易地伪造它。确保您添加的 ListView 项具有 UseItemStyleForSubItems = false,以便您可以将子项的前景色设置为蓝色。实现 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;
  }
}

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

关于c# - 我可以在 ListView 的详细信息模式下显示链接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2288404/

相关文章:

c# - 从 GridView 中删除记录时出错

c# - 我们在 C# 中有某种三重集合吗?

c# - C# 中的 ReadOnly 与 VB.NET 中的对比

c# - 在 C#.NET 中使用 USB PS2 手控器

visual-studio - "Visual Inheritance"的游戏状态是什么

c# - .net DispatcherTimer 重复触发刻度事件

C# 使用 FileSystemWatcher 跟踪文件夹连接

c# - 计时器、事件和垃圾收集 : am I missing something?

c# - 如何防止 WinForms TextBox 中按下 alt 键时发出蜂鸣声?

c# - 小型转储文件对分析 .NET WinForms 应用程序崩溃有用吗?