2011-12-19 88 views
2

我想讓ListView項目內的URL可點擊。如何在ListView中創建可點擊的鏈接?

我該怎麼做?

我希望它的工作方式是以純文本方式存儲用戶鏈接,然後當我檢索鏈接時,我想讓它們在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); 
} 

回答

9

你想要做的第一件事就是給視覺反饋,讓用戶知道項目是可點擊的。我只會任意假定該網址位於第二欄。添加MouseMove事件爲ListView:

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.. 
     } 
    } 
+0

這似乎很不錯。那麼Uri是創建URL的對象? – HelpNeeder 2011-12-20 01:10:39

+0

好吧,我用你的代碼懸停在我想要的字段上。但是,當我點擊沒有發生。這應該是一個鼠標點擊,而不是? – HelpNeeder 2011-12-20 01:32:06

+1

使用調試器。爲了以防萬一,你應該在代碼中填寫//等。 – 2011-12-20 01:48:02