ScrollBarTrackPolicyがBothで行数が0の場合、左端の列が非表示になっていると、スクロールバーのつまみを操作してもスクロールされないことがある

文書番号 : 37566     文書種別 : 不具合     登録日 : 2014/09/10     最終更新日 : 2014/12/15
文書を印刷する
対象製品
SPREAD for Windows Forms 7.0J
発生環境
Version 7.0.2010.2008(SP2)と7.0.2014.2008(SP3)で発生し、Version 7.0.2003.2008(SP1)では発生しません。
状況
修正済み
詳細
ScrollBarTrackPolicyがBothで行数が0の場合、左端の列が非表示になっていると、スクロールバーのつまみを操作してもスクロールされないことがあります。

【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.スクロールバーの左方向のボタンをクリックします
4.スクロールバーのつまみを右方向にドラッグします
   --シートがスクロールしません

【サンプルコード】
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    FpSpread1.ActiveSheet.Rows.Remove(0, FpSpread1.ActiveSheet.Rows.Count)
    FpSpread1.ScrollBarTrackPolicy = FarPoint.Win.Spread.ScrollBarTrackPolicy.Both

    ' 1列目を非表示
    FpSpread1.ActiveSheet.Columns(0).Visible = False
  End Sub
回避方法
Service Pack 4(v7.0.2016.2008)で修正済み。
Service Pack 4(v7.0.2016.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

以下のサンプルコードのようにHorizontalScrollBarクラスのScrollイベントを使用します。

【サンプルコード】
  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    FpSpread1.ActiveSheet.Rows.Remove(0, FpSpread1.ActiveSheet.Rows.Count)
    FpSpread1.ScrollBarTrackPolicy = FarPoint.Win.Spread.ScrollBarTrackPolicy.Both

    ' 1列目を非表示
    FpSpread1.ActiveSheet.Columns(0).Visible = False

    '【回避策】[1/2]
    AddHandler FpSpread1.HorizontalScrollBar.Scroll, AddressOf HorizontalScrollBar_Scroll
  End Sub

  '【回避策】[2/2]
  Private Sub HorizontalScrollBar_Scroll(sender As Object, e As ScrollEventArgs)
    If (e.Type.Equals(ScrollEventType.ThumbTrack)) Then
      FpSpread1.Invalidate(FpSpread1.GetColumnHeaderRectangle(0))
    End If
  End Sub