Выберите разрешение принтера в 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();
}
