How can I handle click on a sub-item of ListView (detail mode)? i.e. I need to detect what exactly column was clicked.
You need to determine the column by its position:
private void listView_Click(object sender, EventArgs e)
{
Point mousePos = listView.PointToClient(Control.MousePosition);
ListViewHitTestInfo hitTest = listView.HitTest(mousePos);
int columnIndex = hitTest.Item.SubItems.IndexOf(hitTest.SubItem);
}
This is working well for me:
private void listView_MouseDown(object sender, MouseEventArgs e)
{
var info = listView.HitTest(e.X, e.Y);
var row = info.Item.Index;
var col = info.Item.SubItems.IndexOf(info.SubItem);
var value = info.Item.SubItems[col].Text;
MessageBox.Show(string.Format("R{0}:C{1} val '{2}'", row, col, value));
}
You can use the ListView.MouseClick
event as follows:
private void listView_MouseClick(object sender, MouseEventArgs e)
{
// Hittestinfo of the clicked ListView location
ListViewHitTestInfo listViewHitTestInfo = listView.HitTest(e.X, e.Y);
// Index of the clicked ListView column
int columnIndex = listViewHitTestInfo.Item.SubItems.IndexOf(listViewHitTestInfo.SubItem);
...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With