Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determine clicked column in ListView

I need to get the column clicked in a ListView in C#

I have some sample code from How to determine the clicked column index in a Listview but I'm not sure how I should implement it.

like image 220
Sathish Avatar asked Mar 04 '10 08:03

Sathish


2 Answers

Jeez, everyone's too lazy to post code. There are three steps to the process:

  1. Get the mouse position using Control.MousePosition and convert to client coordinates.
  2. Call the HitTest function to find what the mouse is pointing to. This returns an object with lots of information except the actual column number so...
  3. Search the subitems array using IndexOf to find the column number.

Here's the code:

private void listViewMasterVolt_DoubleClick(object sender, EventArgs e)
{
    Point mousePosition = myListView.PointToClient(Control.MousePosition);
    ListViewHitTestInfo hit = myListView.HitTest(mousePosition);
    int columnindex = hit.Item.SubItems.IndexOf(hit.SubItem);
}
like image 140
Adam Pierce Avatar answered Nov 09 '22 12:11

Adam Pierce


The ListView control has a HitTest method. You give it the x- and y-coordinates of the mouse click event, and it gives you an object that tells you the row (list view item) and column (list view subitem) at that point.

like image 26
Tim Robinson Avatar answered Nov 09 '22 11:11

Tim Robinson