Как я могу удалить кнопку моей формы, когда я иду к предварительному просмотру печати - PullRequest
0 голосов
/ 14 марта 2019

Привет, ребята, goodevening к вам ... как я могу удалить кнопку 6 в моем предварительном просмотре печати? я не имею ни малейшего представления, даже когда я ложно видимой кнопки6 payslip print preview RUNNING FORM

    Bitmap bitmap;
    private void CaptureScreen()
    {
        Graphics myGraphics = this.CreateGraphics();
        Size s = this.Size;
        bitmap = new Bitmap(s.Width, s.Height, myGraphics);
        Graphics memoryGraphics = Graphics.FromImage(bitmap);
        memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
    }
        private void button6_Click(object sender, EventArgs e)
    {
        Panel panel = new Panel();
        this.Controls.Add(panel);
        Graphics grp = panel.CreateGraphics();
        Size formSize = this.ClientSize;
        bitmap = new Bitmap(formSize.Width, formSize.Height, grp);
        grp = Graphics.FromImage(bitmap);
        Point panelLocation = PointToScreen(panel.Location);
        grp.CopyFromScreen(panelLocation.X, panelLocation.Y, 0, 0, formSize);
        printPreviewDialog1.Document = printDocument1;
        printPreviewDialog1.PrintPreviewControl.Zoom = 1;
        printPreviewDialog1.ShowDialog();



    }

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawImage(bitmap, 0, 0);
    }

}

} // CODE

Ответы [ 2 ]

1 голос
/ 14 марта 2019
    private void button6_Click(object sender, EventArgs e)
    {
        button6.Visible = false;//add here
        Panel panel = new Panel();
        this.Controls.Add(panel);
        Graphics grp = panel.CreateGraphics();
        Size formSize = this.ClientSize;
        bitmap = new Bitmap(formSize.Width, formSize.Height, grp);
        grp = Graphics.FromImage(bitmap);
        Point panelLocation = PointToScreen(panel.Location);
        grp.CopyFromScreen(panelLocation.X, panelLocation.Y, 0, 0, formSize);
        printPreviewDialog1.Document = printDocument1;
        printPreviewDialog1.PrintPreviewControl.Zoom = 1;
        printPreviewDialog1.ShowDialog();
    }

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawImage(bitmap, 0, 0);
    }

    private void printPreviewDialog1_FormClosed(object sender, FormClosedEventArgs e)
    {
        button6.Visible = true;//this is to enable button after closing print screen 
    }
0 голосов
/ 14 марта 2019

Чтобы кнопка действительно стала невидимой, вы должны принудительно запустить события.

В вашем обработчике события button6_Click вы начинаете со строк:

button6.Visible = false;
Application.DoEvents();

Метод DoEvents () принудительно запускает события в очереди событий. Это потому, что вы работаете в потоке пользовательского интерфейса. Я бы не рекомендовал переносить операцию копирования в другой поток, но другим способом было бы запустить таймер пользовательского интерфейса (находится в разделе «Компоненты» в меню инструментов) и установить тайм-аут таймера на несколько мс. Затем вы можете выполнить операцию копирования. Но самое простое решение - просто добавить Application.DoEvents (), так что это моя рекомендация.

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