C# Devexpress树列表-当单元格设置为只读时,如何从单元格中删除值

C# Devexpress树列表-当单元格设置为只读时,如何从单元格中删除值,c#,devexpress,xtratreelist,C#,Devexpress,Xtratreelist,我正在使用devexpress树列表控件。在Treelist中,我的一个专栏是只读的。当另一个单元格中发生某些事件时,此列可能会添加一些文本值。我通过设置这样的属性来限制用户在单元格中的输入 treeList1.Columns["col3"].OptionsColumn.ReadOnly = true; 现在我想从一些单元格中删除文本值,因为它是只读的,所以删除按钮不起作用。您能否建议允许用户删除文本的事件/方法和代码? 任何帮助都将不胜感激。编辑解决方案: 您应该知道,当光标位于单元

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

    treeList1.Columns["col3"].OptionsColumn.ReadOnly = true;
现在我想从一些单元格中删除文本值,因为它是只读的,所以删除按钮不起作用。您能否建议允许用户删除文本的事件/方法和代码?
任何帮助都将不胜感激。

编辑解决方案:

您应该知道,当光标位于单元格中(处于编辑模式)并按下按钮时,发送
KeyDown
事件的不是
TreeList
,而是
RepositoryItemButtonEdit
。因此,您还应该为
RepositoryItemButtonEdit
处理事件

为了不重复代码,我编写了一个处理程序“
onKeyDown
”,在该处理程序中我验证谁是发送者

treeList1.KeyDown += onKeyDown;
riButtonEdit.KeyDown += onKeyDown;
下面是一个代码示例,演示如何处理
treeList
repositoryButtonEdit
KeyDown
事件,并将单元格值设置为
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;
    }
}

你可以发布你用来删除单元格值的代码吗?感谢SidAhmed查看我的问题,老实说,我不知道我应该写什么来删除它。我想我必须写一些单元格事件,并检查按下的键是否是该单元格上的delete,然后删除文本。只是想知道是否有人知道我应该在哪种情况下编写代码来删除单元格的文本值。我也在研究这个。实际上,我把它设为只读,因为这个单元格中有一个图标,点击打开一个对话框。现在,当我将allowedit设置为false时,图标单击不起作用,因此我必须将其设置为只读,因此允许用户单击图标,但限制用户在此单元格中输入任何文本。您已经根据我的问题给出了解决方案,我将接受/标记此为答案。如果您能为这样的情况建议一种解决方法,用户可以单击图像并删除现有文本,但不能自己输入文本,我将不胜感激。非常感谢。这是我为显示图像和文本而编写的代码:buttonEdit=newrepositoryItembuttonedit();treeList1.ShowButtonMode=DevExpress.XtraTreeList.ShowButtonModeEnum.ShowAlways;buttonEdit.Buttons[0]。种类=DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;buttonEdit.Buttons[0].Image=imageCollection2.Images[0];treeList1.ForceInitialize();treeList1.Columns[colName].AppearanceCell.Options.UseTextOptions=true;treeList1.Columns[colName].AppearanceCell.TextOptions.HAlignment=DevExpress.Utils.Horzaignment.Far;buttonEdit.ButtonClick+=新建DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(buttonEdit\u ButtonClick)//treeList1.Columns[colName].OptionsColumn.AllowEdit=false;treeList1.Columns[colName].OptionsColumn.ReadOnly=true;我已经编辑了解决方案以适合您的情况,我已经对其进行了测试,效果良好。