.NET Programming
 

     
.NET Class to Print the contents of a ListBox

Keywords: Printer Print Listbox PFont PrintDocument Page Margins

 

 
 

viagra generika

viagra wiki

viagra prodej inzerce

viagra cena apoteka open

rescue inhaler albuterol

over the counter asthma inhalers

viagra prodej cena

viagra cena apoteka oscarsotorrio.com

viagra and smoking weed

viagra vs weed francescodiaz.azurewebsites.net

alcohol and sertraline 50 mg

sertraline and alcohol anger website

cialis 20mg cena

cialis vs viagra sporturfintl.com

can you drink alcohol while taking citalopram

citalopram and alcohol side effects gailey.org.uk

fluticasone nasal spray

albuterol drug gpdpblog.gsb.gov.tr

abortion videos

emergency contraceptive

ciloxan

ciloxan pris ciloxan pris ciloxan

    class Print

    {

        string[] Rows;

        Font PFont;

        int DocPos = 0;

 

        public void PrintListBox(ListBox LB)

        {

 

            Rows = new string[LB.Items.Count];

            DocPos = 0;

 

            for (int x = 0; x < LB.Items.Count; x++)

            {

                Rows[x] = LB.Items[x].ToString();

            }

 

            PFont = new Font("Tahoma", 10);

            PrintDocument PD = new PrintDocument();

            PD.PrintPage += new PrintPageEventHandler(PD_PrintPage);

            PD.Print();

        }

 

 

 

        private void PD_PrintPage(object sender, PrintPageEventArgs ev)

        {

            float lines = 0;

            float y = 0;

            int count = 0;

            float lMargin = ev.MarginBounds.Left;

            float tMargin = ev.MarginBounds.Top;

            string line = null;

            SizeF size;

 

            lines = ev.MarginBounds.Height / PFont.GetHeight(ev.Graphics);

 

 

            while(count < lines && DocPos  < Rows.Length   )

            {

                y = tMargin + (count * PFont.GetHeight(ev.Graphics));

 

                size = ev.Graphics.MeasureString(Rows[DocPos ], PFont);

                if (size.Width < ev.MarginBounds.Width)

                {

                    ev.Graphics.DrawString(Rows[DocPos],

                        PFont, Brushes.Black, lMargin, y, new StringFormat());

                }

                else

                {

                    int SplitPoint=0;

                    GetSplitPosition(Rows[DocPos], size.Width ,

                        ev.MarginBounds.Width ,out SplitPoint );

                    ev.Graphics.DrawString(Rows[DocPos].Substring(1,SplitPoint )

                        , PFont, Brushes.Black, lMargin, y, new StringFormat());

                    count++;

                    y = tMargin + (count * PFont.GetHeight(ev.Graphics));

                    ev.Graphics.DrawString(Rows[DocPos].Substring( SplitPoint+1

                        ), PFont, Brushes.Black, lMargin, y, new StringFormat());

                }

                count++;

                DocPos++;

            }

 

 

            if(DocPos < Rows.Length )

                ev.HasMorePages = true;

            else

                ev.HasMorePages = false;

        }

 

        private void GetSplitPosition(string LineText, float TextWidth,

            float pageWidth, out int SplitPoint)

        {

            SplitPoint = 0;

            int StartPosition = (int)(LineText.Length * (pageWidth / TextWidth));

            SplitPoint = LineText.Substring(1, StartPosition).LastIndexOf(" ");

        }

 

    }


 


 PTerryWave LLC      Return to Programming Listing
About