2014-12-24 5 views
0

В столбце 3 У меня есть ссылка, и я хочу создать событие ListView MouseClick для показа веб-сайта со ссылкой в ​​браузере. Я написал следующее:Событие ListView MouseClick для URL

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

но он работает только для 1-й колонки. Где я ошибаюсь?

+0

Как это не работает? Выбран ли правильный элемент? Вы входите в Mouseclick? – TaW

+0

Mouseclick должен работать только с колонкой Link. Кстати, он работает для идентификатора столбца, какая ошибка вызова –

ответ

0

MouseClick и Click событие ListView пожар только на (основной) предмет, а не на любые подэлементы.

Таким образом, вы должны использовать другие события и сделать HitTest там:

Следующий код может либо перейти в MouseDown или в MouseUp событие:

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

    } 
Смежные вопросы