我在 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/