Click here to Skip to main content
15,437,689 members
Home / Discussions / C#
   

C#

 
AnswerRe: Scanning for servers Pin
Richard Deeming5-Oct-20 2:44
mveRichard Deeming5-Oct-20 2:44 
GeneralRe: Scanning for servers Pin
pkfox5-Oct-20 3:44
professionalpkfox5-Oct-20 3:44 
GeneralRe: Scanning for servers Pin
pkfox5-Oct-20 4:17
professionalpkfox5-Oct-20 4:17 
Questionversion mismatch Pin
Member 149246074-Oct-20 9:30
MemberMember 149246074-Oct-20 9:30 
AnswerRe: version mismatch Pin
Richard Deeming5-Oct-20 2:33
mveRichard Deeming5-Oct-20 2:33 
GeneralRe: version mismatch Pin
Member 149246075-Oct-20 7:45
MemberMember 149246075-Oct-20 7:45 
GeneralRe: version mismatch Pin
Richard Deeming5-Oct-20 21:22
mveRichard Deeming5-Oct-20 21:22 
QuestionprintDocument Pin
Member 149437371-Oct-20 19:02
MemberMember 149437371-Oct-20 19:02 
Hi,

I am using the printDocument function to print out my datagridview data. However, I am using the debugger to trace my program execution and I have found out that the "printDocument1_BeginPrint" and "printDocument1_PrintPage" never get executed during the program execution.

Can anyone tell me what I have done wrong? Why the printDocument1_PrinPage and printDoucument1_BeginPrint never got executed?

PS. I am pasting my code below of the printing logic.

Thanks,
John

C#
#region Print Button Click Event
        /// <summary>
        /// Handles the print button click event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPrint_Click(object sender, EventArgs e)
        {
            //Open the print dialog
            PrintDialog printDialog = new PrintDialog();
            PrintDocument printDocument1 = new PrintDocument();
            printDialog.Document = printDocument1;
            printDialog.UseEXDialog = true;

            //Get the document
            if (DialogResult.OK == printDialog.ShowDialog())
            {
                printDocument1.DocumentName = "Lottery Tickets Priniting";
                printDocument1.Print();
            }

            //Open the print preview dialog
            //PrintPreviewDialog objPPdialog = new PrintPreviewDialog();
            //objPPdialog.Document = printDocument1;
            //objPPdialog.ShowDialog();
        }
        #endregion

        #region Begin Print Event Handler
        /// <summary>
        /// Handles the begin print event of print document
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            try
            {
                strFormat = new StringFormat();
                strFormat.Alignment = StringAlignment.Near;
                strFormat.LineAlignment = StringAlignment.Center;
                strFormat.Trimming = StringTrimming.EllipsisCharacter;

                arrColumnLefts.Clear();
                arrColumnWidths.Clear();
                iCellHeight = 0;
                iRow = 0;
                bFirstPage = true;
                bNewPage = true;

                // Calculating Total Widths
                iTotalWidth = 0;
                foreach (DataGridViewColumn dgvGridCol in dataGridView1.Columns)
                {
                    iTotalWidth += dgvGridCol.Width;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        #endregion

        #region Print Page Event
        /// <summary>
        /// Handles the print page event of print document
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            try
            {
                //Set the left margin
                int iLeftMargin = e.MarginBounds.Left;
                //Set the top margin
                int iTopMargin = e.MarginBounds.Top;
                //Whether more pages have to print or not
                bool bMorePagesToPrint = false;
                int iTmpWidth = 0;

                //For the first page to print set the cell width and header height
                if (bFirstPage)
                {
                    foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
                    {
                        iTmpWidth = (int)(Math.Floor((double)((double)GridCol.Width /
                                       (double)iTotalWidth * (double)iTotalWidth *
                                       ((double)e.MarginBounds.Width / (double)iTotalWidth))));

                        iHeaderHeight = (int)(e.Graphics.MeasureString(GridCol.HeaderText,
                                    GridCol.InheritedStyle.Font, iTmpWidth).Height) + 11;

                        // Save width and height of headres
                        arrColumnLefts.Add(iLeftMargin);
                        arrColumnWidths.Add(iTmpWidth);
                        iLeftMargin += iTmpWidth;
                    }
                }
                //Loop till all the grid rows not get printed
                while (iRow <= dataGridView1.Rows.Count - 1)
                {
                    DataGridViewRow GridRow = dataGridView1.Rows[iRow];
                    //Set the cell height
                    iCellHeight = GridRow.Height + 5;
                    int iCount = 0;
                    //Check whether the current page settings allo more rows to print
                    if (iTopMargin + iCellHeight >= e.MarginBounds.Height + e.MarginBounds.Top)
                    {
                        bNewPage = true;
                        bFirstPage = false;
                        bMorePagesToPrint = true;
                        break;
                    }
                    else
                    {
                        if (bNewPage)
                        {
                            //Draw Header
                            e.Graphics.DrawString("Lottery Tickets Listing", new Font(dataGridView1.Font, FontStyle.Bold),
                                    Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top -
                                    e.Graphics.MeasureString("Lottery Tickets Listing", new Font(dataGridView1.Font,
                                    FontStyle.Bold), e.MarginBounds.Width).Height - 13);

                            String strDate = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToShortTimeString();
                            //Draw Date
                            e.Graphics.DrawString(strDate, new Font(dataGridView1.Font, FontStyle.Bold),
                                    Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width -
                                    e.Graphics.MeasureString(strDate, new Font(dataGridView1.Font,
                                    FontStyle.Bold), e.MarginBounds.Width).Width), e.MarginBounds.Top -
                                    e.Graphics.MeasureString("Lottery Tickets Listing", new Font(new Font(dataGridView1.Font,
                                    FontStyle.Bold), FontStyle.Bold), e.MarginBounds.Width).Height - 13);

                            //Draw Columns                 
                            iTopMargin = e.MarginBounds.Top;
                            foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
                            {
                                e.Graphics.FillRectangle(new SolidBrush(Color.LightGray),
                                    new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
                                    (int)arrColumnWidths[iCount], iHeaderHeight));

                                e.Graphics.DrawRectangle(Pens.Black,
                                    new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
                                    (int)arrColumnWidths[iCount], iHeaderHeight));

                                e.Graphics.DrawString(GridCol.HeaderText, GridCol.InheritedStyle.Font,
                                    new SolidBrush(GridCol.InheritedStyle.ForeColor),
                                    new RectangleF((int)arrColumnLefts[iCount], iTopMargin,
                                    (int)arrColumnWidths[iCount], iHeaderHeight), strFormat);
                                iCount++;
                            }
                            bNewPage = false;
                            iTopMargin += iHeaderHeight;
                        }
                        iCount = 0;
                        //Draw Columns Contents                
                        foreach (DataGridViewCell Cel in GridRow.Cells)
                        {
                            if (Cel.Value != null)
                            {
                                e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font,
                                            new SolidBrush(Cel.InheritedStyle.ForeColor),
                                            new RectangleF((int)arrColumnLefts[iCount], (float)iTopMargin,
                                            (int)arrColumnWidths[iCount], (float)iCellHeight), strFormat);
                            }
                            //Drawing Cells Borders 
                            e.Graphics.DrawRectangle(Pens.Black, new Rectangle((int)arrColumnLefts[iCount],
                                    iTopMargin, (int)arrColumnWidths[iCount], iCellHeight));

                            iCount++;
                        }
                    }
                    iRow++;
                    iTopMargin += iCellHeight;
                }

                //If more lines exist, print another page.
                if (bMorePagesToPrint)
                    e.HasMorePages = true;
                else
                    e.HasMorePages = false;
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        #endregion


modified 2-Oct-20 1:56am.

AnswerRe: printDocument Pin
Gerry Schmitz1-Oct-20 19:11
mveGerry Schmitz1-Oct-20 19:11 
GeneralRe: printDocument Pin
Member 149437371-Oct-20 22:54
MemberMember 149437371-Oct-20 22:54 
AnswerRe: printDocument Pin
OriginalGriff1-Oct-20 20:03
mveOriginalGriff1-Oct-20 20:03 
GeneralRe: printDocument Pin
Member 149437371-Oct-20 22:37
MemberMember 149437371-Oct-20 22:37 
GeneralRe: printDocument Pin
OriginalGriff1-Oct-20 22:40
mveOriginalGriff1-Oct-20 22:40 
QuestionHow to compare on DPFP.Template to another DPFP.Template Pin
Member 144684061-Oct-20 3:07
MemberMember 144684061-Oct-20 3:07 
AnswerRe: How to compare on DPFP.Template to another DPFP.Template Pin
Gerry Schmitz1-Oct-20 4:49
mveGerry Schmitz1-Oct-20 4:49 
GeneralRe: How to compare on DPFP.Template to another DPFP.Template Pin
Member 144684061-Oct-20 8:39
MemberMember 144684061-Oct-20 8:39 
GeneralRe: How to compare on DPFP.Template to another DPFP.Template Pin
Gerry Schmitz2-Oct-20 4:31
mveGerry Schmitz2-Oct-20 4:31 
GeneralRe: How to compare on DPFP.Template to another DPFP.Template Pin
Member 144684062-Oct-20 20:35
MemberMember 144684062-Oct-20 20:35 
GeneralRe: How to compare on DPFP.Template to another DPFP.Template Pin
Gerry Schmitz3-Oct-20 3:11
mveGerry Schmitz3-Oct-20 3:11 
QuestionCopy DataTable into a Ms Access table Pin
Member 1464251030-Sep-20 21:31
MemberMember 1464251030-Sep-20 21:31 
AnswerRe: Copy DataTable into a Ms Access table Pin
OriginalGriff30-Sep-20 21:59
mveOriginalGriff30-Sep-20 21:59 
GeneralRe: Copy DataTable into a Ms Access table Pin
Member 1464251030-Sep-20 22:15
MemberMember 1464251030-Sep-20 22:15 
GeneralRe: Copy DataTable into a Ms Access table Pin
OriginalGriff30-Sep-20 23:06
mveOriginalGriff30-Sep-20 23:06 
AnswerRe: Copy DataTable into a Ms Access table Pin
Gerry Schmitz1-Oct-20 5:14
mveGerry Schmitz1-Oct-20 5:14 
Questionwant to insert leave dates for weekdays excluding weekends from given date range using c# ASP.net Pin
shwetaliv23-Sep-20 2:12
Membershwetaliv23-Sep-20 2:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.