Devexpress TreeList - как я могу удалить значение из ячейки, если она установлена только для чтения
Я использую элемент управления devexpress TreeList. В Treelist у меня есть ситуация, когда один из моих столбцов доступен только для чтения. В этом столбце могут быть добавлены некоторые текстовые значения, когда что-то происходит в другой ячейке. Я ограничил запись пользователя в ячейке, установив свойство, подобное этому
treeList1.Columns["col3"].OptionsColumn.ReadOnly = true;
Теперь я хочу удалить текстовое значение из некоторых ячеек, и поскольку оно только для чтения, кнопки удаления не работают. Можете ли вы предложить событие / метод и код, который позволит пользователю удалить текст? Любая помощь приветствуется.
1 ответ
Отредактированное решение:
Вы должны знать, что когда курсор находится в ячейке (в режиме редактирования), и вы нажимаете кнопку, это не TreeList
кто отправляет KeyDown
событие, но RepositoryItemButtonEdit
, Таким образом, вы должны обрабатывать событие также для RepositoryItemButtonEdit
,
Чтобы не дублировать код, я написал один обработчикonKeyDown
', в которой я проверяю, кто является отправителем.
treeList1.KeyDown += onKeyDown;
riButtonEdit.KeyDown += onKeyDown;
А вот пример кода, показывающий, как обращаться с KeyDown
событие для обоих treeList
а также repositoryButtonEdit
и установите значение ячейки в null
:
private void onKeyDown(object sender, KeyEventArgs e)
{
// Test if the button pressed is the delete button
if (e.KeyCode != Keys.Delete)
return;
// Test if the focused column is colValue
if (treeList1.FocusedColumn != colValue)
return;
// Set the cell value to null
treeList1.FocusedNode.SetValue(colValue, null);
// If it's the ButtonEdit who send the event, make it's EditValue null
var btnEdit = sender as ButtonEdit;
if (btnEdit != null)
{
btnEdit.EditValue = null;
}
}