Handle click on a sub-item of ListView

后端 未结 3 1192
孤街浪徒
孤街浪徒 2020-12-16 12:44

How can I handle click on a sub-item of ListView (detail mode)? i.e. I need to detect what exactly column was clicked.

相关标签:
3条回答
  • 2020-12-16 13:18

    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);
    
        ...
    }
    
    0 讨论(0)
  • 2020-12-16 13:29

    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);
    }
    
    0 讨论(0)
  • 2020-12-16 13:40

    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));
        }
    
    0 讨论(0)
提交回复
热议问题