Выборочное отключение ячеек строки в DataBound DataGridView - PullRequest
1 голос
/ 02 сентября 2010

Мне нужно иметь возможность отключить несколько ячеек подряд на основе логического флага.Если флаг установлен, то все должно быть включено и видно как обычно.Однако, если флаг ложен, мне нужно сделать несколько ячеек в строке невидимыми и только для чтения.

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Вы можете обработать событие CellPainting, проверить состояние своего флага там и затем нарисовать ячейку, которая будет показана / скрыта.

Эта ссылка на MSDN может помочь вам в этом:

http://msdn.microsoft.com/en-us/library/hta8z9sz.aspx

0 голосов
/ 09 мая 2013

Вот мой пример.Добавьте обработчик событий для CellPainting, затем определите, отключен элемент или нет.Если он отключен, просто нарисуйте фон и сделайте ячейку доступной только для чтения.

У меня есть собственный класс BoardStatusView, связанный с сеткой данных, который имеет логическую функцию, определяющую, должна ли ячейка иметьфлажок или нет (Upgradeable())

    private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    {
        if (e.RowIndex >= 0)
        {
            BoardStatusView bs = dataGridView1.Rows[e.RowIndex].DataBoundItem as BoardStatusView;
            bool disabled = !bs.Upgradeable();
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly = disabled;
            if (disabled && e.ColumnIndex == 0)
            {
                e.PaintBackground(e.ClipBounds, false);
                e.Handled = true;
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...