ScrollBarTrackPolicyがBothで行数が0の場合、左端の列が非表示になっていると、スクロールバーのつまみを操作してもスクロールされないことがある
対象製品
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
【手順】
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
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