【发布时间】:2013-02-03 09:22:22
【问题描述】:
出了什么问题:
当我在 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 控件,现在似乎是由于验证处理程序所致。
【问题讨论】:
标签: winforms model-view-controller spreadsheetgear controlcollection