LeaveCellイベント内でMessageBoxを表示すると、行モード(OperationMode.RowMode)でドラッグしたままセル移動する際にLeaveCellが2回発生する場合がある

文書番号 : 37636     文書種別 : 不具合     登録日 : 2014/10/20     最終更新日 : 2014/12/15
文書を印刷する
対象製品
SPREAD for Windows Forms 7.0J
状況
修正済み
詳細
LeaveCellイベント内でMessageBoxを表示すると、行モード(OperationMode.RowMode)でドラッグしたままセル移動する際にLeaveCellイベントが2回発生する場合があります。

【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.B2セルをクリックしマウスボタンを押下したままB2セル内でドラッグします
4.マウスのボタンを離します
  --LeaveCellイベントが2回発生します

【サンプルコード】
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    FpSpread1.ActiveSheet.Cells(0, 1).RowSpan = 2
    FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode
  End Sub

  Private Sub FpSpread1_LeaveCell(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.LeaveCellEventArgs) Handles FpSpread1.LeaveCell
    If Not e.Column = 0 Then
      MessageBox.Show("From : Row,Column = (" + e.Row.ToString() + "," + e.Column.ToString() + ")" + System.Environment.NewLine + "To   : Row,Column = (" + e.NewRow.ToString() + "," + e.NewColumn.ToString() + ")")
    End If
  End Sub
回避方法
Service Pack 4(v7.0.2016.2008)で修正済み。
Service Pack 4(v7.0.2016.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

FpSpread1にフォーカスがあるときだけMessageBoxを表示します。

【サンプルコード】
  Private Sub FpSpread1_LeaveCell(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.LeaveCellEventArgs) Handles FpSpread1.LeaveCell
    If Not e.Column = 0 And FpSpread1.Focused Then
      MessageBox.Show("From : Row,Column = (" + e.Row.ToString() + "," + e.Column.ToString() + ")" + System.Environment.NewLine + "To   : Row,Column = (" + e.NewRow.ToString() + "," + e.NewColumn.ToString() + ")")
    End If
  End Sub