読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET 絡みのメモを公開しています。

SPREAD for Win Formsの奇妙な動き(バグ?)(FarPoint, GrapeCity, FpCombo, ShowList, FpSpread, Form.Activated)

C#


SPREADを張り付けた画面にて以下の操作を行うと例外が発生します。

  1. 予めコマンドプロンプトなどの別の画面を立ち上げておく.
  2. 標準のコンボセルをどこかの列に配置して実行.
    1. データは何件か用意しておく.
  3. マウスでコンボのドロップダウンを表示
  4. ドロップダウンを閉じないまま、別の画面(たとえばコマンドプロンプト)をアクティブにする.
  5. 上でアクティブになった画面はそのままにして、もう一度マウスにてコンボを開く.
    1. このとき、コンボの右端のドロップボタンではなく項目自体をクリック。
  6. そのまま更にもう一度コンボを開こうとするとNull Reference発生・・・。
    1. このとき、コンボの右端のドロップボタンではなく項目自体をクリック。


特徴がありまして、出力されるスタックトレースが以下のようになります。

       at FarPoint.Win.FpCombo.ShowList(Boolean bShow)
       at FarPoint.Win.FpCombo.a(Object A_0, MouseEventArgs A_1)
       at System.Windows.Forms.Control.OnMouseUp(MouseEventArgs e)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ListBox.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)

ShowListが見えたら、このエラーの可能性が高いです。


原因は、FarPointの本家サイトのフォーラムにて
いろいろ書かれているのですが、FormのActivatedイベントが発生する為の
ようです。フォーラムのポスト内容を見ると、2009年ってなっているんですが
直っていないようですね。


最後の投稿内容を見ると、何らかのフラグを用意して
ComboDropDownとActivatedイベントを処理すればいいみたいに
書かれてますが、何もユーザコードを書いていない状態で
操作しても落ちるんですが・・・。


パッチも提供されていない模様です。
なんとかならないものか・・・・。