After refresh PrintControl looses margins

Viewed 33

At app starting, the print control generates OK with 25.4mm margins (on all sides), but after refresh it changes to 5.08mm.

I use a control named Print Bar. The below code does not work.

The BeginPrint and PrintPage method: link

Print before

Print before Print After

Can I force somehow the margins?

My refresh code is:

    private void setupReport()
    {
        PaperSize ps = new PaperSize();
        ps.RawKind = 9;
        printDocument1.PrinterSettings.DefaultPageSettings.PaperSize = ps;
        printDocument1.PrinterSettings.DefaultPageSettings.Margins = new Margins(10, 10, 10, 10);
        ////printDocument1.PrinterSettings.DefaultPageSettings.PaperSource = ;

        this.preview = new System.Windows.Forms.PrintPreviewControl();
        this.preview.Dock = System.Windows.Forms.DockStyle.Fill;

        this.preview.Document = this.printDocument1;

        this.preview.Location = new System.Drawing.Point(3, 42);
        this.preview.Name = "printPreviewControl1";
        this.preview.Size = new System.Drawing.Size(786, 362);
        this.preview.TabIndex = 2;

        this.ucPrintBar1.PreviewControl = this.preview;
        this.tabPage3.Controls.Add(this.preview);
        this.ucPrintBar1.loadDefaults();
        
    }
1 Answers

I added the following five lines to setupReport() method's first line:

private void setupReport()
{
    this.ucFormManagement1.addExtra("LeftMargin",printDocument1.DefaultPageSettings.Margins.Left);
    this.ucFormManagement1.addExtra("RightMargin", printDocument1.DefaultPageSettings.Margins.Right);
    this.ucFormManagement1.addExtra("BottomMargin", printDocument1.DefaultPageSettings.Margins.Bottom);
    this.ucFormManagement1.addExtra("TopMargin", printDocument1.DefaultPageSettings.Margins.Top);
    this.ucFormManagement1.addExtra("Orientation", printDocument1.DefaultPageSettings.Landscape);

    this.preview = new System.Windows.Forms.PrintPreviewControl();
    this.preview.Dock = System.Windows.Forms.DockStyle.Fill;

    this.preview.Document = this.printDocument1;

    this.preview.Location = new System.Drawing.Point(3, 42);
    this.preview.Name = "printPreviewControl1";
    this.preview.Size = new System.Drawing.Size(786, 362);
    this.preview.TabIndex = 2;

    this.ucPrintBar1.PreviewControl = this.preview;
    this.tabPage3.Controls.Add(this.preview);
    this.ucPrintBar1.loadDefaults(); 
}

Now the print refresh works like it should.

Related