我正在使用DevExpress 2.9.5的XtraGrid来显示动态线条组的吸墨纸。吸墨器集成到另一个应用程序中,这就是为什么它必须基于UserControl类并且还实现了几个自定义接口。
public partial class BlotterForm : UserControl, ISMMdiEmbeddable, ISMAssociatedMFCWindow
{
private BindingList<BlotterTrade> fDeals;
....
}
由于数据绑定到使用BindedList进行控制,因此任何更改都应自动反映在表单中。如果我尝试在fDeals中添加新行,如下所示:
public void AddDeal()
{
fDeals.Add(new BlotterTrade(1,2,3));
}
...我可以看到这条线,但它的内容是垃圾。
我尝试在小型测试应用程序中执行相同的操作。它的工作正常,只是测试应用程序中的吸墨纸基于DevExpress.XtraEditors.XtraForm。对我而言,现在看起来原始吸墨纸的形式不会超载某些方法或错过某些事件。但我无法找出究竟错过了什么。
有人可以告诉我我做错了什么或不做什么?
感谢。
答案 0 :(得分:0)
有几件事:
BindingList并不总是与DevExpress一起使用,建议改为使用XPCollection。
您是否有关于如何在xtragrid中设置列的更多信息?如果您在列中使用了错误的字段名称,那么它们将无法显示您要查找的内容。
如果你正在使用的参数(1,2,3)是作为fkeys存储到其他对象的id(不确定你是否使用xpo)那么它们也不会正确显示(在单元格中可能有一个'+'而不是任何值。)
[旁边]确保blottertrade实现INotifyPropertyChanged以更好地与网格交互。
答案 1 :(得分:0)
感谢大家的回答和评论。我想我解决了这个问题。它实际上与我的应用程序中的本机C ++和C#层之间的交互有关。应该在XtraGrid中显示的对象是在C ++层创建的,网格与对象构造/解构异步显示,这就是为什么当网格准备好显示它时,对象本身不存在。因此垃圾。网格本身没有崩溃或触发异常,这很好。