出了什么问题:
当我在 SpreadsheetGear WorkbookView 中编辑一个单元格并通过按 Enter、Tab 或任何箭头键启动 CellEndEdit 事件时,我刚刚键入的值将被清除。
语境:
- 似乎在 WorkbookView 中编辑单元格时,会在 WorkbookView 顶部添加一个控件,该控件的行为类似于 TextEdit,以允许您键入数据。当发生 CellEndEdit 事件时,调用堆栈指示 WorkbookView 调用 ControlCollection.Remove(...)。
- 这反过来又会导致表单将焦点放在页面上的另一个控件上。有问题的页面包括 WorkbookView 上方的一些 TextEdit 控件,这些控件是从基本页面继承的。第一个 TextEdit 会在短时间内获得焦点。
- 在这些 TextEdits 上设置验证,最终启动模型更新。这会清除 WorkbookView 中的内容,因为所有这些都发生在视图更改被推送到模型之前。
问题:
在我的 WorkbookViews 事件处理程序可以将视图的更改推送到模型之前,有没有办法阻止其他控件接收焦点?还是有其他方法可以更好地处理这个问题?
请让我知道我是否可以在任何地方详细说明或更好地解释自己,谢谢!
更新:
我用一个 DevExpress TextEdit 和一个 SpreadsheetGear WorkbookView 创建了一个测试应用程序。如果我添加 textEdit1_Validated 和 textEdit1_Enter,我会得到相同的行为。焦点转到 TextEdit 控件,现在似乎是由于验证处理程序。