红十字会在DevExpress XtraGrid

本文关键字:XtraGrid DevExpress 红十字会 | 更新日期: 2023-09-27 18:05:10

有时候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

红十字会在DevExpress XtraGrid

从我以前的GDI经验来看,一旦你处于这种状态,你就会被卡住。你已经做了一些在GDI中引起问题的事情,并且它没有设法抛出异常/从中恢复。

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

这确实是DevExpress团队应该解决的一个bug。

您可以尝试在网格上调用BeginInvoke

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

无论何时处理数据源,您都可以尝试将其包装在这样的语句中。

我也经历过类似的事情,你会惊讶于这样的事情是多么频繁。

是否有一个简单的方法,如果你是在状态"XtraGrid显示红色X"XtraGrid可以重新工作

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

你链接到的文章有关于什么原因导致"死亡红十字"出现的信息,要么是在绘制过程中发生未处理的异常,要么是你处理控件的CustomDraw事件并发生异常,要么是异步调用方法。

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

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