Как проверить, была ли позиция щелчка мыши только внутри элемента в столбце [0] в списке в режиме virtualmode? - PullRequest
0 голосов
/ 09 июня 2009

C #: как проверить, была ли позиция щелчка мыши только внутри элемента в столбце [0] в просмотре списка в режиме virtualmode?

Я могу получить объект Item, по которому щелкнула мышь, используя ListView.GetItemAt, но после этого, как я могу проверить, был ли он нажат в столбце [0]?

Ответы [ 3 ]

0 голосов
/ 09 июня 2009

Не обращайте внимания, я нашел решение после того, как немного повозился с кодом. Вот решение, которое я использовал:

    private void lvListView_MouseClick(object sender, MouseEventArgs e)
    {
        ListView lv = (ListView)sender;
        ListViewItem lvi;

        if (e.X > lv.Columns[0].Width)
        {
            lvi = null;
        }
        else
        {
            lvi = lv.GetItemAt(e.X, e.Y);
        }

        if (lvi != null)
        {
            lvi.Checked = !lvi.Checked;
            lv.Invalidate(lvi.Bounds);
        }
    }
0 голосов
/ 09 июня 2009

ListViewItem имеет член GetSubItemAt, который, вероятно, поможет.

0 голосов
/ 09 июня 2009

Возможно, что-то вроде этого (внутри события мыши: e имеет тип MouseEventArgs):

// get the rectangle for the first item; used for getting sideways scrolling offset
Rectangle r = listView1.GetItemRect(0);
int leftOffset = r.Left;

if (listView1.Columns[0].Width + leftOffset > e.X)
{
    // first column
}
else
{
    // other column
}

Обновление: пропущено, что это был только первый столбец, который был интересен; первым решением выбрал столбец индекса под мышкой; это выбирает только «первый» или «другой» случаи. Обратите внимание, что учитывается также боковая прокрутка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...