0

我正在使用 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。对我来说,现在看起来原始吸墨纸的形式不会使某些方法过载或错过某些事件。但我无法找出究竟错过了什么。

有人能告诉我我做错了什么或不做什么吗?

谢谢。

4

2 回答 2

0

有几件事:

  1. BindingList 并不总是与 DevExpress 配合得很好,建议改用 XPCollection。

  2. 您是否有更多关于如何在 xtragrid 中设置列​​的信息?如果您在列中使用了不正确的字段名称,那么它们将不会显示您要查找的内容。

  3. 如果您使用的参数 (1, 2, 3) 是存储为其他对象的 fkeys 的 id(不确定您是否使用 xpo),那么它们也不会正确显示(可能会有'+' 在单元格中而不是任何值)。

  4. [旁白] 确保 blottertrade 实现 INotifyPropertyChanged 以更好地与网格交互。

于 2009-10-14T18:12:15.703 回答
0

感谢大家的回答和评论。我想我解决了这个问题。它实际上与我的应用程序中本机 C++ 和 C# 层之间的交互有关。应该在XtraGrid中显示的对象是在C++层中创建的,网格与对象构造/解构异步显示,这就是为什么在网格准备显示它的那一刻,对象本身并不存在。因此,垃圾。网格本身没有崩溃或引发异常,这很好。

于 2009-10-22T15:46:09.200 回答