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