我正在使用 devexpress TreeList 控件。在 Treelist 中,我的一个专栏是只读的。当另一个单元格发生某些事情时,此列可能会添加一些文本值。我通过设置这样的属性来限制用户进入单元格
treeList1.Columns["col3"].OptionsColumn.ReadOnly = true;
现在我想从一些单元格中删除文本值,因为它是只读的,所以删除按钮不起作用。您能否建议允许用户删除文本的事件/方法和代码?任何帮助将非常感激。
我正在使用 devexpress TreeList 控件。在 Treelist 中,我的一个专栏是只读的。当另一个单元格发生某些事情时,此列可能会添加一些文本值。我通过设置这样的属性来限制用户进入单元格
treeList1.Columns["col3"].OptionsColumn.ReadOnly = true;
现在我想从一些单元格中删除文本值,因为它是只读的,所以删除按钮不起作用。您能否建议允许用户删除文本的事件/方法和代码?任何帮助将非常感激。
编辑解决方案:
您应该知道,当光标在单元格中(在编辑模式下)并且您按下按钮时,不是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;
}
}