いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

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


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イベントを処理すればいいみたいに
書かれてますが、何もユーザコードを書いていない状態で
操作しても落ちるんですが・・・。


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