在DevExpress网格中,如何单击一次更改复选框的值?

问题描述

我有一个带有DevExpress 19.1 GridControl的C#、. net 4.6.1,Windows Form项目。其中一列具有未绑定的复选框。要选中此复选框,我必须单击三次。根据我在网上阅读的内容,第一次单击将焦点设置在单元格上,第二次单击打开编辑器,第三次单击将值更改为选中(第四次单击取消选中)。用户坚称他们不想在复选框上单击3次。我发现了一些讨论类似问题的建议(以下详细介绍),但是对我没有任何帮助。一次单击如何进入和退出检查状态?

这是当前的操作:

enter image description here

这就是我想要的:

enter image description here

我发现这里有一个类似的问题:DevExpress XtraGrid checkbox check not registered unless focus changes,但这对我不起作用。

一个建议是调用页面上列出的PostEditor函数https://supportcenter.devexpress.com/ticket/details/a880/how-to-save-the-value-of-an-in-place-check-box-as-soon-as-it-is-changed。我使用以下代码尝试过:

    private void repositoryItemCheckEdit1_EditValueChanged(object sender,System.EventArgs e)
    {
        gvPoCost.PostEditor();
    }

它所做的就是选中此复选框,因此它没有发生变化。点击它什么也没有做。它保持认的“灰色框”格式,就像单击之前一样。

第二个建议是将焦点放在所选行上。我使用以下代码尝试过:

        private void gvPoCost_CellValueChanging(object sender,DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
    {
        gvPoCost.SetFocusedRowCellValue(gvPoCost.FocusedColumn,e.Value);
    }

但是它再次不起作用并选中了该复选框,因此单击它不会更改该值。

这是我的复选框设置方式的其余相关代码

this.colSelected = new DevExpress.XtraGrid.Columns.GridColumn();
this.repositoryItemCheckEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();

this.gvPoCost.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
        this.colSelected,...}

        this.gcPoCost.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] 
{
        this.repositoryItemCheckEdit1,this.repositoryItemCheckEdit2});

        // 
        // colSelected
        // 
        this.colSelected.Caption = "Select";
        this.colSelected.ColumnEdit = this.repositoryItemCheckEdit1;
        this.colSelected.Name = "colSelected";
        this.colSelected.Visible = true;
        this.colSelected.VisibleIndex = 0;

        // 
        // repositoryItemCheckEdit1
        // 
        this.repositoryItemCheckEdit1.AutoHeight = false;
        this.repositoryItemCheckEdit1.Name = "repositoryItemCheckEdit1";
        this.repositoryItemCheckEdit1.EditValueChanged += new System.EventHandler(this.repositoryItemCheckEdit1_EditValueChanged);

((System.ComponentModel.ISupportinitialize)(this.repositoryItemCheckEdit1)).EndInit();

    private DevExpress.XtraGrid.Columns.GridColumn colSelected;
    private DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repositoryItemCheckEdit1;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)