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

Hel*_*der 3 c# url listview winforms

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

Han*_*ant 13

您要做的第一件事是提供视觉反馈,让用户知道该项目是可点击的.我只是随意假设网址在第二列.为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;
    }
Run Code Online (Sandbox Code Playgroud)

下一步非常相似,实现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..
        }
    }
Run Code Online (Sandbox Code Playgroud)