|
■No42555 (Azulean さん) に返信 > printDialog1 にどのようなものを設定しているのか、どのような場所でどうやって Landscape を確認しているか、示しませんか。
//PrintDocumentオブジェクトの作成 System.Drawing.Printing.PrintDocument printDocument1 = new System.Drawing.Printing.PrintDocument(); //PrintPageイベントハンドラの追加 printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
//PrintDialogクラスの作成 PrintDialog pdlg = new PrintDialog(); //PrintDocumentを指定 pdlg.Document = printDocument1;
//ページ指定できるようにする pdlg.AllowSomePages = true; //ページ指定の最小値と最大値を指定する pdlg.PrinterSettings.MinimumPage = 1; pdlg.PrinterSettings.MaximumPage = 10; //印刷開始と終了ページを指定する pdlg.PrinterSettings.FromPage = pdlg.PrinterSettings.MinimumPage; pdlg.PrinterSettings.ToPage = pdlg.PrinterSettings.MaximumPage;
//印刷の選択ダイアログを表示する if (pdlg.ShowDialog() == DialogResult.OK) { //OKがクリックされた時は印刷する printDocument1.Print(); }
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { //ページ範囲が指定されており、始めのページのときは、 //印刷開始ページまで飛ばす if (e.PageSettings.PrinterSettings.PrintRange == System.Drawing.Printing.PrintRange.SomePages && currentPage == 1) { currentPage = e.PageSettings.PrinterSettings.FromPage; }
e.Graphics.PageUnit = GraphicsUnit.Millimeter;
//currentPageで指定されたページを描画する Font f = new Font(ConstVall.FONTTYPE, 12); e.Graphics.DrawString(richTextBox1.Text, f, Brushes.Black, new RectangleF(0, 0, 200, 350)); f.Dispose();
//次のページがあるか調べる if (currentPage >= 10 || (e.PageSettings.PrinterSettings.PrintRange == System.Drawing.Printing.PrintRange.SomePages && e.PageSettings.PrinterSettings.ToPage <= currentPage)) { //次のページがないことを通知する e.HasMorePages = false; currentPage = 1; } else { e.HasMorePages = true; currentPage++; } //**************************************************************************// if(printDocument1.DefaultPageSettings.Landscape==true) { MessageBox.Show("縦"); } if(printDocument1.DefaultPageSettings.Landscape==false) { MessageBox.Show("横"); } //***************************************************************************// }
上のコードで、printDocument1.DefaultPageSettings.Landscapeの返り値によってメッセージを表示していますが、縦に設定しても、横に設定してもfalseが返ってくるので、メッセージで横が表示されます。
|