【问题标题】:Devexpress TreeList - how can i delete value from a cell when it is set as readonlyDevexpress TreeList - 当单元格设置为只读时如何从单元格中删除值
【发布时间】:2014-01-30 05:45:52
【问题描述】:

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

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

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

【问题讨论】:

  • 能否请您发布用于删除单元格值的代码?
  • 感谢 SidAhmed 查看我的问题,老实说,我不确定我应该写什么来删除它。我想我必须写一些单元格事件并检查按下的键是否在该单元格上删除,然后删除文本。只是想知道是否有人知道我应该在哪种情况下编写代码来删除单元格的文本值。我也在研究这个。

标签: c# devexpress xtratreelist


【解决方案1】:

修改后的解决方案:

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

为了不重复代码,我编写了一个处理程序“onKeyDown”,以验证谁是发件人。

treeList1.KeyDown += onKeyDown;
riButtonEdit.KeyDown += onKeyDown;

下面是一个代码示例,向您展示如何处理treeListrepositoryButtonEditKeyDown 事件,并将单元格值设置为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;
    }
}

【讨论】:

  • 实际上我将其设为只读,因为此单元格中有一个图标,单击它会打开一个对话框。现在,当我将 allowedit 设置为 false 时,该图标单击不起作用,因此我必须将其设为只读,因此允许用户单击图标但限制他在此单元格中输入任何文本。您已根据我的问题给出了解决方案,我将接受/标记为答案。如果您能针对这种情况提出解决方法,我将不胜感激,在这种情况下,用户可以单击图像以及删除现有文本但不能自己输入文本。非常感谢。
  • 这是我为显示图像和文本而编写的代码: buttonEdit = new RepositoryItemButtonEdit(); treeList1.ShowButtonMode = DevExpress.XtraTreeList.ShowButtonModeEnum.ShowAlways; buttonEdit.Buttons[0].Kind = 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.HorzAlignment.Far; buttonEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(buttonEdit_ButtonClick); //treeList1.Columns[colName].OptionsColumn.AllowEdit = false; treeList1.Columns[colName].OptionsColumn.ReadOnly = true;
  • 我已经根据您的情况编辑了解决方案,我已经对其进行了测试,并且效果很好。
猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
相关资源
最近更新 更多