0

我正在使用 devexpress TreeList 控件。在 Treelist 中,我的一个专栏是只读的。当另一个单元格发生某些事情时,此列可能会添加一些文本值。我通过设置这样的属性来限制用户进入单元格

    treeList1.Columns["col3"].OptionsColumn.ReadOnly = true;

现在我想从一些单元格中删除文本值,因为它是只读的,所以删除按钮不起作用。您能否建议允许用户删除文本的事件/方法和代码?任何帮助将非常感激。

4

1 回答 1

0

编辑解决方案:

您应该知道,当光标在单元格中(在编辑模式下)并且您按下按钮时,不是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;
    }
}
于 2014-01-30T13:04:38.863 回答