列表视图鼠标单击事件
本文关键字:事件 单击 鼠标 视图 列表 | 更新日期: 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);
}
}
但它仅适用于第一列。我哪里犯了错误?
ListView
的MouseClick
和Click
事件仅在(主)项上触发,而不在任何子项上触发。
因此,您必须使用其他事件并在那里执行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);
}
}