非表示列があると、操作モード(OperationMode)の設定によって、左右の矢印キーでスクロールが行われない場合がある
対象製品
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
操作モードを単一選択モード(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
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