There's not a straight-forward way to do this.
Primarily because AFAIK, you can't technically select any column besides the first one since the others are all sub-items and you're really only selecting the item.
But, if you set each sub-items tag with an int representing the column associated with that sub-item, then you could easily tell where the user clicked using the MouseDown event like so:
private void listView2_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo newInfo = listView2.HitTest(e.X, e.Y);
ListViewItem hitItem = null;
if (newInfo.Item != null)
{
if (newInfo.Item.Index >= 0)
{
hitItem = listView2.Items[newInfo.Item.Index];
}
}
if (hitItem != null)
{
for (int i = 0; i < (hitItem.SubItems.Count - 1); i++)
{
if (hitItem.SubItems[i].Tag == newInfo.SubItem.Tag)
{
MessageBox.Show("Row=" + (newInfo.Item.Index + 1).ToString() +
Environment.NewLine + "Column=" +
(i + 1).ToString());
}
}
}
}