Определить выбранный столбец в ListView - PullRequest
10 голосов
/ 04 марта 2010

Мне нужно получить столбец в ListView в C #

У меня есть пример кода из Как определить индекс столбца, по которому щелкнули в Listview , но я не уверен, как мне его реализовать.

Ответы [ 4 ]

18 голосов
/ 23 апреля 2012

Боже, всем лень публиковать код. Процесс состоит из трех этапов:

  1. Получите положение мыши с помощью Control.MousePosition и преобразуйте в клиентские координаты.
  2. Вызовите функцию HitTest, чтобы узнать, на что указывает мышь. Это возвращает объект с большим количеством информации, кроме фактического номера столбца, так что ...
  3. Поиск в массиве подэлементов с помощью IndexOf, чтобы найти номер столбца.

Вот код:

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);
}
4 голосов
/ 04 марта 2010

Элемент управления ListView имеет метод HitTest. Вы даете ему x- и y-координаты события щелчка мыши, и он дает вам объект, который сообщает вам строку (элемент представления списка) и столбец (подэлемент представления списка) в этой точке.

1 голос
/ 07 августа 2014

e.Column фактически содержит индекс

    private void lv_ColumnClick(object sender, ColumnClickEventArgs e)
    {            
        Int32 colIndex = Convert.ToInt32(e.Column.ToString());
        lv.Columns[colIndex].Text = "new text";

    }
0 голосов
/ 21 декабря 2010

Это код VB.NET, но объекты должны быть одинаковыми.

Private LVUsersLastHit As Point
    Private Sub lvUsers_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lvUsers.MouseUp
        Me.LVUsersLastHit = e.Location
    End Sub
    Private Sub LvUsers_Doubleclick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvUsers.DoubleClick
        Dim HTI As ListViewHitTestInfo = Me.lvUsers.HitTest(Me.LVUsersLastHit)
        If HTI.Item Is Nothing OrElse HTI.SubItem Is Nothing Then Exit Sub 'nothing was dblclicked
        MsgBox("doubleClicked the " & HTI.Item.ToString & " Item  on the " & HTI.SubItem.ToString & " sub Item")
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...