У меня есть datagridview на форме с некоторыми данными. 1-й столбец содержит кнопку для удаления строки. Как мы можем отключить эту кнопку или всю строку на основе некоторого условия, таким образом, строка не может быть удалена?
На самом деле HowTo в MSDN делает именно это.
Edit: Добавлены некоторые другие предложения.
Вы можете сделать невидимым столбец кнопок.
Или, если вы хотите запретить удаление только определенных строк, вы можете указать true или false в каждом свойстве DataGridViewRow
s Tag
, а в обработчике событий кнопки вы удаляете только те для которых установлено значение false. Вы могли бы объединить это с простым изменением цвета переднего плана и фона ячейки, чтобы она выглядела отключенной, эту окраску, вероятно, можно было бы сделать в обработчике событий CellFormatting
или что-то в этом роде, чтобы вам не приходилось пропустите и раскрасьте вручную.
Не могли бы вы просто отключить ячейку кнопки в обычное пустое текстовое поле?
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);