Datagridview, отключить кнопку / строку - PullRequest
6 голосов
/ 04 июня 2010

У меня есть сетевое представление на форме с некоторыми данными. 1-й столбец содержит кнопку для удаления строки. Как мы можем отключить эту кнопку или всю строку на основании какого-либо условия, чтобы эту строку нельзя было удалить?

Ответы [ 3 ]

8 голосов
/ 09 августа 2010

Не могли бы вы просто отключить ячейку кнопки в обычное пустое текстовое поле?

Dim cell As DataGridViewButtonCell = dgv.row(x).cell(y)
cell = New DataGridViewTextBoxCell()
cell.value = String.Empty
cell.ReadOnly = True

Он теряет окаймленный внешний вид «кнопки» и сливается с остальными ячейками (при условии, что вы в основном используете DataGridViewTextBoxCells по умолчанию).

Вот эквивалент в C #, плюс оно затеняет поле, чтобы оно выглядело только для чтения:

var cell = dgv[column, row] = new DataGridViewTextBoxCell();
cell.Value = ""; // ignored if this column is databound
cell.ReadOnly = true;
cell.Style.BackColor = Color.FromKnownColor(KnownColor.Control);
3 голосов
/ 30 декабря 2012

Это старый пост, но я хотел бы предложить, что я делаю.

If conditionToDisable Then
   Dim cell As New DataGridViewTextBoxCell   'Replace the ButtonCell for a TextCell'
   cell.Value = valueForCell                 'Set the value again'
   grid.Rows(r).Cells(c) = cell              'Override the cell'
End If

Надеюсь, это полезно.

3 голосов
/ 04 июня 2010

На самом деле в MSDN HowTo делает именно это.

Редактировать: добавлены некоторые другие предложения.

Вы можете сделать столбец кнопки невидимым.

Или, если вы хотите отключить удаление только определенных строк, вы можете указать значение true или false в каждом свойстве DataGridViewRow s Tag, а в своем обработчике событий кнопки вы удалите только те из них, для которых установлено значение false. Возможно, вы можете комбинировать это с простым изменением цвета переднего плана и фона ячейки, чтобы она выглядела отключенной, эта раскраска может быть выполнена в обработчике события CellFormatting или что-то подобное, чтобы вам не пришлось проходить и окрашивать это вручную.

...