3

有时 XtraGrid 得到一个红十字而不是数据。(http://www.devexpress.com/Support/Center/p/CB4246.aspx、http://www.devexpress.com/Support/Center/p/A884.aspx等)_

我已启用中断异常(Ctrl+D、E、选择所有异常)-但不确定是否会发生其他任何事情以致出现红线。

如果您处于“XtraGrid 显示红色 X”状态,是否有一种简单的方法可以让 XtraGrid 再次工作(据我所知,仅关闭表单并重新打开它有帮助)。

我正在寻找类似的东西

 GridView gridView = this. GridViewXYZ(objectview);
 // objectView is refreshed
 gridView.RefreshData(); // <- this can thorw an exception that data is not available / UI will get an red cross
 // ??? do something to reset the gridView in a workig condition
4

4 回答 4

2

您可以尝试调用BeginInvoke网格。

Action a = () => gridView.RefreshData();
gridView.GridControl.BeginInvoke(a);

每当摆弄数据源时,您都可以尝试将其包装在这样的语句中。

我已经过期了一些类似的东西,你会惊讶于这样的东西的工作频率。

于 2013-04-18T11:06:58.497 回答
2

根据我之前的 GDI 经验,一旦你处于这种状态,你就会陷入困境。你做了一些在 GDI 中引起问题的事情,但它没有设法抛出异常/从中恢复。

关闭/重新打开表单的行为会导致释放和重新创建非托管 GDI 对象,因此 GDI 再次完全可操作,直到发生相同的错误情况。如果你不能防止这个错误,你可以看看尝试为表单/控件重新创建一个新的 GDI 对象,但我不确定你会如何去做。

这确实是 DevExpress 团队应该解决的错误。

于 2013-04-17T14:59:07.913 回答
1

如果您处于“XtraGrid 显示红色 X”状态,是否有一种简单的方法可以让 XtraGrid 再次开始工作

是的,如果您从一开始就没有进入错误状态。否则通过关闭/重新打开来解决它。

您链接到的文章包含有关导致“死亡红十字会”出现的原因的信息,或者在绘画期间发生未处理的异常,您处理控件的 CustomDraw 事件并且发生异常或正在异步调用方法。

如果您难以确定问题的原因,请尝试在示例项目中重新创建问题并将其发送给 DevExpress 支持团队。

于 2013-04-17T05:35:00.993 回答
0

在显示引用对话框时,有时与 Visusa Studio 扩展 CodeRush(也由 devExpress 提供)有同样的问题。所以这似乎是一个内部问题。希望下一个版本的 devexpress 能解决这个问题。

于 2013-04-18T10:46:49.597 回答