【问题标题】:ListView MouseClick Event for URLURL 的 ListView MouseClick 事件
【发布时间】:2014-12-24 10:10:12
【问题描述】:

在第 3 列中,我有链接,我想从浏览器中的链接创建 ListView MouseClick 事件以显示网站。我是这样写的:

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);
     }
}

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

【问题讨论】:

  • 怎么不行?是否选择了正确的项目?你输入鼠标点击了吗?
  • Mouseclick 必须仅适用于列链接。顺便说一句,它适用于列 ID,称为错误

标签: c# winforms listview


【解决方案1】:

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);
        }

    }

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2012-09-18
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多