列表视图鼠标单击事件

本文关键字:事件 单击 鼠标 视图 列表 | 更新日期: 2023-09-27 18:35:15

在第 3 列中,我有链接,我想从浏览器中的链接创建 ListView 鼠标单击事件以显示网站。我写了这个:

private void listView1_MouseClick(object sender, MouseEventArgs e)
{
     try
     {
         string linkOn = "linkto:" +                                       
         listView1.SelectedItems[id.Text].SubItems[linkOnTheme.Index].Text;
         System.Diagnostics.Process.Start(linkOn);
     }    
     catch (Win32Exception ex)
     {
         MessageBox.Show("An error has occured: " + ex.Message);
     }
}

但它仅适用于第一列。我哪里犯了错误?

列表视图鼠标单击事件

ListViewMouseClickClick事件仅在(主)项上触发,而不在任何子项上触发。

因此,您必须使用其他事件并在那里执行HitTest

以下代码可以进入MouseDownMouseUp事件:

    Point mousePos = listView1.PointToClient( Control.MousePosition );
    ListViewHitTestInfo htInfo = listView1.HitTest(mousePos);
    if (htInfo.Item == null) return;
    int itemIndex = htInfo.Item.Index;
    int subItemIndex = htInfo.Item.SubItems.IndexOf(htInfo.SubItem);
    if (subItemIndex == yourLinkColumnIndex)
    {
        try
        {
            string linkOn = "linkto:" +  htInfo.Item.SubItems[subItemIndex].Text;
            System.Diagnostics.Process.Start(linkOn);
        } catch (Win32Exception ex)
        {
            MessageBox.Show("An error has occured: " + ex.Message);
        }
    }