如何在ListView中创建可点击的链接?

我试图在ListView项目中使URL可点击。

我该怎么做呢?

我希望它工作的方式是用户以纯文本存储链接,然后当我检索链接时,我想让它们在ListView中可点击。

这是我在read.GetString(2)拉取URL值时从我的数据库中检索条目的方法:

if (security.DecryptAES (read.GetString(1), storedAuth.Password, storedAuth.UserName) == "Web Site Password") { // Count Web passwords. countWeb++; Web = new ListViewItem(""); Web.SubItems.Add(security.DecryptAES (read.GetString(2), storedAuth.Password, storedAuth.UserName)); Web.SubItems.Add(security.DecryptAES (read.GetString(5), storedAuth.Password, storedAuth.UserName)); Web.SubItems.Add(security.DecryptAES (read.GetString(6), storedAuth.Password, storedAuth.UserName)); Web.Tag = read.GetInt32(0); lvWeb.Items.Add(Web); } 

您要做的第一件事是提供视觉反馈,让用户知道该项目是可点击的。 我只是随意假设url在第二列。 为ListView添加MouseMove事件:

  private void listView1_MouseMove(object sender, MouseEventArgs e) { var hit = listView1.HitTest(e.Location); if (hit.SubItem != null && hit.SubItem == hit.Item.SubItems[1]) listView1.Cursor = Cursors.Hand; else listView1.Cursor = Cursors.Default; } 

下一步非常相似,实现MouseUp事件以检测子项上的点击:

  private void listView1_MouseUp(object sender, MouseEventArgs e) { var hit = listView1.HitTest(e.Location); if (hit.SubItem != null && hit.SubItem == hit.Item.SubItems[1]) { var url = new Uri(hit.SubItem.Text); // etc.. } }