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

回答とコメントをくださった皆さんに感謝します。私は問題を整理したと思います。実際には、アプリケーション内のネイティブ C++ と C# レイヤー間の相互作用に関連していました。XtraGrid に表示されるはずのオブジェクトが C++ レイヤーで作成され、オブジェクトの構築/分解とは非同期でグリッドが表示されたため、グリッドが表示可能になった時点でオブジェクト自体が存在しませんでした。したがって、ゴミ。グリッド自体がクラッシュしたり、例外を発生させたりしていないのは良いことです。

于 2009-10-22T15:46:09.200 に答える
0

いくつかのこと:

  1. BindingList は常に DevExpress でうまく機能するとは限らないため、代わりに XPCollection を使用することをお勧めします。

  2. xtragrid で列を設定する方法について、さらに詳しい情報はありますか? 列で間違ったフィールド名を使用すると、探しているものが表示されません。

  3. 使用しているパラメーター (1、2、3) が他のオブジェクトへの fkey として保存されている ID である場合 (xpo を使用しているかどうかは不明)、それらも正しく表示されません (おそらくセル内の値の代わりに「+」)。

  4. [余談] グリッドとのより良い相互作用のために、blottertrade が INotifyPropertyChanged を実装していることを確認してください。

于 2009-10-14T18:12:15.703 に答える