GcZoomを配置したフォームでSPREADのセルをダブルタップすると例外が発生することがある

文書番号 : 39120     文書種別 : 不具合     登録日 : 2015/09/29     最終更新日 : 2015/11/27
文書を印刷する
対象製品
MultiTouch for Windows Forms 1.0J
状況
修正済み
詳細
以下の条件をすべて満たす場合には、NullReferenceExceptionが発生してしまいます。

・GcZoomコンポーネントとSPREADコントロールを同じフォームに配置している
・フォームはShow()またはShowDialog()メソッドで表示されている
・SPREADのCellDoubleClickイベントでフォームのDispose()メソッドを呼び出している
・タッチデバイスでSPREADのセルをダブルタップしている
※(マウスによるダブルクリックでは発生しません)

本現象はGcApplicationZoomコンポーネント、GcZoomPanelコントロールを使用した場合にも発生します。
回避方法
この問題はService Pack 3(v1.0.2015.1127)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。

また、下記のようにTimerを利用してフォームを終了するタイミングを遅らせることで例外を回避することができます。

[Visual Basic]
Private Sub FpSpread1_CellDoubleClick(sender As Object, e As FarPoint.Win.Spread.CellClickEventArgs) Handles FpSpread1.CellDoubleClick
    Dim timer = New Timer()
    timer.Interval = 350
    timer.Start()
    AddHandler timer.Tick, AddressOf AsyncClose
End Sub

Sub AsyncClose(o As Object, e As EventArgs)
    Dim timer = DirectCast(o, Timer)
    timer.Stop()
    timer.Dispose()
    Me.Dispose()
End Sub

[C#]
    private void FpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
    {
        object timer = new Timer();
        timer.Interval = 350;
        timer.Start();
        timer.Tick += AsyncClose;
    }

    public void AsyncClose(object o, EventArgs e)
    {
        object timer = (Timer)o;
        timer.Stop();
        timer.Dispose();
        this.Dispose();
    }
キーワード
MTTK11235