非表示列があると、操作モード(OperationMode)の設定によって、左右の矢印キーでスクロールが行われない場合がある

文書番号 : 39090     文書種別 : 不具合     登録日 : 2015/09/08     最終更新日 : 2015/09/29
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
状況
修正済み
詳細
非表示列があると、操作モード(OperationMode)の設定によって、左右の矢印キーでスクロールが行われない場合があります。
操作モードを単一選択モード(SingleSelect)、拡張選択モード(ExtendedSelect)または複数選択モード(MultiSelect)に設定した場合に発生します。

【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.A1セルをクリックします
4.右矢印キーを押下します
  --シートがスクロールしてC列が1番左に表示されます
5.右矢印キーを押下します
  --シートがスクロールせずC列が1番左に表示されたままです

【サンプルコード】
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    FpSpread1.ActiveSheet.Columns(1).Visible = False
    FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect
  End Sub
回避方法
Service Pack 1(v8.0.3502.2008)で修正済み。
Service Pack 1(v8.0.3502.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

LeftChangeイベントで非表示列が1番左にならないよう設定します。

【サンプルコード】
  Private Sub FpSpread1_LeftChange(sender As Object, e As FarPoint.Win.Spread.LeftChangeEventArgs) Handles FpSpread1.LeftChange
    Dim leftColumn As Integer = e.NewLeft
    If Not (FpSpread1.ActiveSheet.GetColumnVisible(leftColumn)) Then
      If (e.OldLeft > leftColumn) Then
        While ((Not FpSpread1.ActiveSheet.GetColumnVisible(leftColumn) Or FpSpread1.ActiveSheet.GetColumnWidth(leftColumn) = 0) AndAlso leftColumn > 0)
          leftColumn = leftColumn - 1
        End While
      Else
        While ((Not FpSpread1.ActiveSheet.GetColumnVisible(leftColumn) Or FpSpread1.ActiveSheet.GetColumnWidth(leftColumn) = 0) AndAlso leftColumn < FpSpread1.ActiveSheet.ColumnCount)
          leftColumn = leftColumn + 1
        End While
      End If
      FpSpread1.SetViewportLeftColumn(0, leftColumn)
    End If
  End Sub