Как мне распечатать страницу TabControl в Winforms? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь распечатать выбранную страницу в элементе управления winforms tab, но независимо от того, что я делаю, я получаю пустую страницу.

У меня есть этот код для захвата и печати скриншота формы Windows с помощью элемента управления PrintDocument; Я хотел бы сделать что-то похожее на это.

    private void CaptureScreen()
    {
        Graphics myGraphics = this.CreateGraphics();
        Size s = this.Size;
        memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
        Graphics memoryGraphics = Graphics.FromImage(memoryImage);
        memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
    }

    private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
    {
        Bitmap newImage = new Bitmap(memoryImage, new Size(Convert.ToInt32(memoryImage.Width / 1.25), Convert.ToInt32(memoryImage.Height / 1.25)));
        newImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
        e.Graphics.DrawImage(newImage, 0, 0);
    }

    private void printBtn_Click(object sender, EventArgs e)
    {
        PrintDialog myPrintDialog = new PrintDialog();
        if (myPrintDialog.ShowDialog() == DialogResult.OK)
        {
            CaptureScreen();
            printDocument1.Print();
        }
    }  

Я попытался изменить объект, на который ссылается функция CaptureScreen, на вкладку, в отличие от общей формы окон; Я попытался выяснить, как использовать функцию PrintVisual объекта PrintDialog, но это, похоже, работает только в проектах WPF, а это не так. Кто-нибудь знает, как заставить это работать?

1 Ответ

0 голосов
/ 28 января 2019

Оказывается, это была ошибка PEBKAC: я добавил объект PrintDocument в свою форму, но я забыл фактически подключить событие PrintPage в PrintDocument.Как только я это сделал, форма распечаталась правильно.

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