Диалог печати C # всегда использует принтер по умолчанию, несмотря на выбор пользователя - PullRequest
1 голос
/ 23 февраля 2012

Я предвосхищу это, сказав, что для начинающей я заставляю свою программу печатать на самом деле больше боли, чем я ожидал, и я просто счастлив, что она работает.

Если естьбыло бы очень просто, если бы мой код не всегда использовал принтер по умолчанию.Если нет, и мне нужно переработать его, я просто сочту это отличной возможностью для обучения :) В любом случае любая помощь, которую вы можете оказать, будет принята с благодарностью.

Вот мой код:

void PrintImage(object o, PrintPageEventArgs e)
{
    int x = SystemInformation.WorkingArea.X;
    int y = SystemInformation.WorkingArea.Y;
    int width = this.Width;
    int height = this.Height;
    Rectangle bounds = new Rectangle(x, y, width, height);
    Bitmap img = new Bitmap(width, height);

    this.DrawToBitmap(img, bounds);
    Point p = new Point(75, 75);
    e.Graphics.DrawImage(img, p);
}

private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
    DialogResult result = printFD.ShowDialog();
    if (result == DialogResult.OK)
    {
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += new PrintPageEventHandler(PrintImage);
        pd.Print();
    }
}

У меня есть диалоговое окно печати, и пользователи могут выбирать свой принтер, но, как я уже говорил, принтер по умолчанию всегда используется независимо от выбора.Чтобы немного уточнить и, возможно, сузить сферу применения этого решения, я действительно хочу, чтобы пользователи могли выбирать наш .pdf принтер.

Заранее благодарим за любую помощь, которую вы можете оказать.Я довольно новичок в этом сообществе, но богатство знаний здесь и быстрые ответы уже поразили меня.Я искренне благодарен за помощь, которую вы оказываете начинающим, таким как я.Ура!

1 Ответ

4 голосов
/ 23 февраля 2012

Вам нужно добавить это в printToolStripMenuItem_Click, перед pd.Print ():

pd.PrinterSettings = printFD.PrinterSettings;

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...