Запретить выбор строки в сетке данных при нажатии на ячейку флажка - PullRequest
1 голос
/ 14 октября 2010

У меня есть DataGridView, где в каждой строке есть флажок. Я хочу, чтобы выбранная строка изменялась только тогда, когда пользователь нажимает на одну из текстовых ячеек. Однако, если флажок установлен, я бы хотел, чтобы флажок изменил его состояние и перехватил это событие.

Я искал везде и нашел пару решений, которые решают половину проблемы, но я не нашел ничего, что на 100% препятствует изменению выбранной строки, когда я нажимаю на свои флажки.

1 Ответ

1 голос
/ 14 октября 2010

Обдумал обходной путь.

Вместо прослушивания событий SelectionChanged я прослушивал события CellMouseClick и затем переключал свой флаг own , для которого выбрана строка.* Я также изменил стиль строки по умолчанию, чтобы не указывать, какая строка выбрана.Затем я добавил код, чтобы изменить стиль строки в зависимости от того, какая строка была выбрана в соответствии с моей собственной строкой .Ниже приведен код просто для прослушивания CellMouseClicks в определенных столбцах, остальное очень специфично для моего приложения.

    void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        // Make sure it is a left click
        if(e.Button == MouseButtons.Left)
        {
            // Make sure it is on a cell
            if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
            {
                // Only allow certain columns to trigger selection changes (1 & 2)
                if (e.ColumnIndex == 1 || e.ColumnIndex == 2)
                {
                    // Set my own private selected row index
                    setSelectedRow(e.RowIndex);
                }
                else
                {
                    // Actions for other columns...
                }
            }
        }
    }
...