Выберите разрешение принтера в C#
В этом примере показано, как разрешить пользователю выбирать разрешение принтера. Когда вы устанавливаете принтер объекта PrintDocument, его коллекция DefaultPageSettings.PrinterSettings.PrinterResolutions содержит объекты PrinterResolution, представляющие доступные разрешения принтера. Например, вы можете выбрать один из них для печати в черновом разрешении и сэкономить некоторое время и тонер.
При запуске эта программа использует следующий код для отображения доступных принтеров в cboPrinter ComboBox.
// Список доступных принтеров. private void Form1_Load(object sender, EventArgs e) { foreach (string printer in PrinterSettings.InstalledPrinters) cboPrinter.Items.Add(printer); }
Этот код просто проходит через коллекцию System.Drawing.Printing.PrinterSettings.InstalledPrinters, добавляя имена принтеров в ComboBox.
Когда пользователь выбирает принтер, следующий код отображает разрешения принтера в cboResolution ComboBox.
// Показывать доступные разрешения этого принтера. private void cboPrinter_SelectedIndexChanged( object sender, EventArgs e) { // Выберите принтер. pdocSmiley.PrinterSettings.PrinterName = cboPrinter.Text; // Отображение доступных разрешений. cboResolution.Items.Clear(); foreach (PrinterResolution resolution in pdocSmiley.DefaultPageSettings. PrinterSettings.PrinterResolutions) { cboResolution.Items.Add(resolution.ToString()); } // Включить кнопку «Печать», если принтер и // выбрано разрешение. btnPrint.Enabled = ( (cboPrinter.SelectedIndex > -1) && (cboResolution.SelectedIndex > -1)); }
Код сначала устанавливает принтер объекта PrintDocument на тот, который выбран пользователем. Затем он перебирает разрешения принтера, добавляя их в ComboBox.
Наконец, когда пользователь нажимает кнопку «Печать», следующий код печатает на выбранном принтере с выбранным разрешением.
// Печать. private void btnPrint_Click(object sender, EventArgs e) { // Выберите принтер. pdocSmiley.PrinterSettings.PrinterName = cboPrinter.Text; // Выберите выбранное разрешение. pdocSmiley.DefaultPageSettings.PrinterResolution = pdocSmiley.DefaultPageSettings.PrinterSettings. PrinterResolutions[cboResolution.SelectedIndex]; // Распечатать. pdocSmiley.Print(); }