C# 输入时,Repository Combo BoxEdit EditValueChanged多次激发。
我在Devexpress CustomGridView中有此存储库项comboboxEditC# 输入时,Repository Combo BoxEdit EditValueChanged多次激发。,c#,devexpress,devexpress-windows-ui,C#,Devexpress,Devexpress Windows Ui,我在Devexpress CustomGridView中有此存储库项comboboxEdit private void gridView1_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) { if (e.Column == this.gcCol1) { var repositoryItem = new Repos
private void gridView1_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
{
if (e.Column == this.gcCol1)
{
var repositoryItem = new RepositoryItemComboBox();
foreach (var title in this.ViewModelList.Titles)
{
repositoryItem.Items.Add(title.TitleName);
}
repositoryItem.EditValueChanged += this.PostEditValueChanged;
repositoryItem.Validating+=this.validating;
e.RepositoryItem = repositoryItem;
}
}
private void PostEditValueChanged(object sender, EventArgs e)
{
this.gridView1.PostEditor();
}
EditValueChanged在键入时多次激发。是否有方法在用户完全编辑完单元格后触发此EditValueChanged。
类似这样的东西
Devexpress支持对此问题进行了一些修复,但似乎没有帮助。
不确定activeedior关闭并重置光标的原因。
我不想在EditValueChange中设置插入符号位置
我还尝试了CellvalueChanged,但这需要单击usercontrol。
与repository.validating相同
repositoryItem.EditValueChanged += this.PostEditValueChanged;
repositoryItem.Validating+=this.validating;
有没有一种方法可以确定用户是否已编辑组合框,或者仍在编辑组合框,然后启动editvaluechanged,而无需担心在组合框外单击edit我可以通过不启动editvaluechanged并使用验证事件来解决此问题。 当编辑器即将失去焦点时触发此事件。它与CellvalueChanged不同,如果用户单击表单而不是usercontrol,则更改将丢失。gridView1.PostEditor;将在填充值后显示编辑器。类似地,我们可以将验证事件更改为在“回车键”上触发,以快速解决问题。更好的方法: 在编辑器上处理GridView的CellValueChanged事件,而不是EditValueChanged事件 在处理程序中,确定触发事件的列。比如说,
if (e.Column.Equals(this.gvColTitle))
{
//Access the repository item:
ComboBoxEdit editor = this.gridView1.ActiveEditor as ComboBoxEdit;
//Assign your values to the editor.
}
我不知道为什么要在运行时添加存储库项,但您可以在XtraGrid Designer屏幕中创建它,并将其分配给该列。您仍然可以在运行时使用上述命令更新其项目列表。EditValueChanged实际上在每次编辑值更改时都会激发,这意味着每个新的或删除的字符都将触发事件。我在EditValueChanged事件中有一个Posteditor。PostEditor通过不关闭活动编辑器来保存对数据源的更改。但出于某种原因,它正在关闭活动编辑器,这意味着将光标重置为0。因此,当用户进行编辑或键入时,我所能做的就是不调用editvalueChanged。但在焦点丢失时使用验证