PrintDocumentクラスを使って印刷する時に、プリンタで印刷可能な用紙のサイズをコンボボックスに一覧表示して、選択された用紙サイズで印刷できるようにする方法を紹介します。
プリンタでサポートされている用紙サイズは、PrintDocument.PrinterSettingsプロパティで取得できるPrinterSettingsオブジェクトのPrinterSettings.PaperSizesプロパティで分かります。
具体例を示します。まず、フォームにPrintDocumentオブジェクト"PrintDocument1"とコンボボックス"ComboBox1"を配置します。そしてPrintDocument1がサポートしている用紙サイズをComboBox1に表示するコードは、次のようになります。
'ComboBox1の項目をクリアする ComboBox1.Items.Clear() '表示するプロパティをPaperNameとする ComboBox1.DisplayMember = "PaperName" 'PaperSizeをComboBox1に追加していく Dim ps As System.Drawing.Printing.PaperSize For Each ps In PrintDocument1.PrinterSettings.PaperSizes ComboBox1.Items.Add(ps) Next ps
//ComboBox1の項目をクリアする ComboBox1.Items.Clear(); //表示するプロパティをPaperNameとする ComboBox1.DisplayMember = "PaperName"; //PaperSizeをComboBox1に追加していく foreach (System.Drawing.Printing.PaperSize ps in PrintDocument1.PrinterSettings.PaperSizes) { ComboBox1.Items.Add(ps); }
上の例ではComboBox.ItemsプロパティにPaperSizeオブジェクトを追加していますが、ComboBox.DisplayMemberプロパティを"PaperName"とすることにより、ComboBox1にはPaperSize.PaperNameプロパティの値が表示されるようになります。
次にComboBoxで選択された用紙サイズで印刷するコードを示します。ComboBox.SelectedItemプロパティで取得したPaperSizeオブジェクトをDefaultPageSettings.PaperSizeプロパティに入れているだけです。
なおここでは、PrintDocument1のPrintPageイベントハンドラは省略しています。PrintPageイベントハンドラがないと、印刷はできません。印刷する方法については、「印刷する」をご覧ください。
'用紙サイズをComboBox1で選択されているサイズにする PrintDocument1.DefaultPageSettings.PaperSize = _ CType(ComboBox1.SelectedItem, System.Drawing.Printing.PaperSize) '印刷する PrintDocument1.Print()
//用紙サイズをComboBox1で選択されているサイズにする PrintDocument1.DefaultPageSettings.PaperSize = (System.Drawing.Printing.PaperSize) ComboBox1.SelectedItem; //印刷する PrintDocument1.Print();
(この記事は、「.NETプログラミング研究 第38号」で紹介したものです。)