印刷プレビュー画面から印刷した場合、印刷の向きの設定が維持されない

文書番号 : 37579     文書種別 : 不具合     登録日 : 2014/09/18     最終更新日 : 2015/11/09
文書を印刷する
対象製品
SPREAD for WPF 1.0J
状況
修正済み
詳細
印刷プレビュー画面から印刷した際、印刷の向きの設定が維持されない場合があります。

【手順】
1.新規ウィンドウにSPREADとButtonを配置します
2.下記サンプルコードをコピーします
3.Buttonをクリックし、印刷プレビュー画面から印刷します
   --印刷の向きの設定が維持されません

【サンプルコード】
  Private Sub MainWindow_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
    ' 印刷の向きの設定
    GcSpreadGrid1.PrintSettings = New GrapeCity.Windows.SpreadGrid.PrintSettings
    GcSpreadGrid1.PrintSettings.PageOrientation = GrapeCity.Windows.SpreadGrid.PrintPageOrientation.Landscape

    GcSpreadGrid1.RowCount = 10

    ' テストデータの設定
    For i As Integer = 0 To GcSpreadGrid1.RowCount - 1
      For j As Integer = 0 To GcSpreadGrid1.ColumnCount - 1
        GcSpreadGrid1.Cells(i, j).Value = "R=" + i.ToString() + "C=" + j.ToString()
      Next
    Next
  End Sub

  Private Sub Button1_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
     GcSpreadGrid1.PrintPreview()
  End Sub
回避方法
Service Pack 2(v1.0.2015.1109)で修正済み。
Service Pack 2(v1.0.2015.1109)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

プレビューボタンで印刷ボタンを押す時、コマンドをGcSpreadGridのPrintメソッドに置き換えます。

【サンプルコード】
  Private Sub Button1_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    _cacheWindows.Clear()
    GcSpreadGrid1.PrintPreview()

    For Each w As Window In Me._cacheWindows
      CommandManager.RemovePreviewExecutedHandler(w, AddressOf PreviewCommand)
    Next
  End Sub

  Private _cacheWindows As New List(Of Window)()
  Private Sub MainWindow_Deactivated1(sender As Object, e As EventArgs) Handles Me.Deactivated
    For Each w As Window In Application.Current.Windows
      If w Is Me OrElse Me._cacheWindows.Contains(w) Then
        Continue For
      End If
      CommandManager.AddPreviewExecutedHandler(w, New ExecutedRoutedEventHandler(AddressOf PreviewCommand))
      Me._cacheWindows.Add(w)
    Next
  End Sub

  Private Sub PreviewCommand(sender As Object, e As ExecutedRoutedEventArgs)
    If e.Command Is ApplicationCommands.Print Then
      e.Handled = True
      Me.GcSpreadGrid1.Print()
    End If
  End Sub