Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > .NET Framework > Forum > C# winApp printDocument PrintPage สั่งปริ้นแล้วมีข้อความที่ทับกันอยู่ ครับ


 

[.NET] C# winApp printDocument PrintPage สั่งปริ้นแล้วมีข้อความที่ทับกันอยู่ ครับ

 
Topic : 137104



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook


โค้ด คลาสแม่
Code (C#)
001.using System;
002.using System.Collections.Generic;
003.using System.ComponentModel;
004.using System.Data;
005.using System.Diagnostics;
006.using System.Drawing;
007.using System.Drawing.Printing;
008.using System.IO;
009.using System.Linq;
010. 
011.using System.Text;
012.using System.Threading.Tasks;
013.using System.Windows.Forms;
014. 
015.namespace KidsLearning.Print
016.{
017.    public partial class prnControl : UserControl
018.    {
019.        public prnControl()
020.        {
021.            InitializeComponent();
022.        }
023.        #region Variables
024. 
025.        
026.        protected string ReportHeader;
027.        protected string ReportToppic;
028. 
029.        protected Font fontHeader = new Font("CordiaUPC", 18, FontStyle.Bold);
030.        protected Font fontDetail = new Font("CordiaUPC", 18);
031.        protected Font fontExpression = new Font("Microsoft Sans Serif", 18);
032. 
033.        public string filePrintPre = "";
034. 
035.        protected System.Drawing.StringFormat strFormat = new StringFormat()
036.        {
037.            Alignment = StringAlignment.Near,
038.            LineAlignment = StringAlignment.Center,
039.            Trimming = StringTrimming.EllipsisCharacter
040.        }; //Used to format the grid rows.
041. 
042.        protected int iPage = 1;
043.        protected int iPageAll = 10;
044.        protected bool bFirstPage = false; //Used to check whether we are printing first page
045.        protected bool bNewPage = false;// Used to check whether we are printing a new page
046.        //Whether more pages have to print or not
047.        protected bool bMorePagesToPrint = false;
048.       
049. 
050.        #endregion
051.        private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
052.        {
053.            Cursor.Current = Cursors.WaitCursor;
054.            bFirstPage = true;
055.            bNewPage = true;
056.        }
057. 
058.        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
059.        {
060. 
061.        }
062.       internal void printDocumentNewPage(object sender, PrintPageEventArgs e)
063.        {
064.            // System.Windows.Forms.MessageBox.Show(_ReportHeader);
065.            //Draw Header
066.            //  string strToppic = "แปลงหน่วยนับ ต่อไปนี้ให้ถูกต้อง";
067.            e.Graphics.DrawString(ReportHeader, fontHeader, Brushes.Black, 300, e.MarginBounds.Top - e.Graphics.MeasureString(ReportHeader, fontHeader, e.MarginBounds.Width).Height - 13);
068.            e.Graphics.DrawString(ReportToppic, fontHeader, Brushes.Black, 100, 90);
069.            //Draw Footer
070.            e.Graphics.DrawString($"test date ...../...../.......  by.......................  Print date {DateTime.Now.ToString("yyyyMMdd hhmmss")}  Page{iPage}/{iPageAll}", fontDetail, Brushes.Black, e.MarginBounds.Left -40, e.MarginBounds.Bottom + 40);
071. 
072.        }
073.        private void prnControl_Load(object sender, EventArgs e)
074.        {
075.            this.Dock = DockStyle.Fill;
076.            this.printDocument1.DefaultPageSettings.Landscape = false;
077.          //  groupBox1.Width = 250;
078.        }
079. 
080.        private void bntPrint_Click(object sender, EventArgs e)
081.        {
082.            if (System.Windows.Forms.DialogResult.OK == this.printDialog1.ShowDialog())
083.            {
084.                string filePre = Application.StartupPath +  filePrintPre;
085.                
086.               /* if ( File.Exists(filePre))
087.                {
088.                    if (MessageBox.Show("คุณต้องการสั่งปริ้น เนื้อหา/บทเรียน ด้วยหรือไม่", "แจ้งเตือน", MessageBoxButtons.YesNo) == DialogResult.Yes)
089.                    {
090.                        TORServices.Drawings.PrintFile.Print(filePre);
091.                    }
092.                     
093.                }*/
094.                bNewPage = true;
095.                bMorePagesToPrint = true;
096. 
097.                iPageAll = int.Parse(this.txtPageCount.Text);
098.                iPage = 1;
099.                this.printDocument1.PrinterSettings.PrinterName = printDialog1.PrinterSettings.PrinterName;
100.                this.printDocument1.DocumentName = ReportHeader + string.Format("{0:yyyyMMdd hhmmss}", DateTime.Now);
101.                this.printDocument1.Print();
102.            }
103.        }
104.         
105. 
106. 
107.        private void printDocument1_EndPrint(object sender, PrintEventArgs e)
108.        {
109.            Cursor.Current = Cursors.Default;
110.        }
111.    }
112.}


คลาสลูก
Code (C#)
001.private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
002.        {
003.            //Loop till all the grid rows not get printed
004.            if (bFirstPage) printDocumentNewPage(sender, e);
005. 
006.            #region _Draw Detail
007. 
008.            int yC = 120, xC = 100;
009.            int a = 0, b = 0, _a = 0, _b = 0,
010.                den_1 = 1, den_2 = 1, _den_1 = 1, _den_2 = 1,
011.                ext_1 = 0, ext_2 = 0, _ext_1 = 0, _ext_2 = 0;
012.            string _sop = Sop;
013.            string _Den;
014.            for (int i = 0; i < 6; i++)
015.            {
016. 
017.                _den_1 = 1;
018.                _den_2 = 1;
019.                _ext_1 = 0;
020.                _ext_2 = 0;
021.                if (Den == "E/NE")
022.                {
023.                    switch (RandomNumber.Randomnumber(1, 4000))
024.                    {
025.                        case int n when n > 3000:
026.                            _Den = "E"; break;
027.                        case int n when n <= 3000 && n > 2000:
028.                            _Den = "NE"; break;
029.                        case int n when n <= 2000 && n > 1000:
030.                            _Den = "E_Int"; break;
031.                        case int n when n <= 1000:
032.                            _Den = "E_Flc"; break;
033.                        default:
034.                            _Den = "E"; break;
035.                    }
036.                }
037.                else
038.                {
039.                    _Den = Den;
040.                }
041. 
042.                if (_Den == "E")//ส่วนเหมือนกัน
043.                {
044.                    _den_1 = RandomNumber.Randomnumber(3, 10);
045.                    _den_2 = _den_1;
046. 
047.                }
048.                else if (_Den == "NE")//ส่วนต่างกัน
049.                {
050.                    _den_1 = RandomNumber.Randomnumber(4, 10);
051.                    do
052.                    {
053.                        _den_2 = RandomNumber.Randomnumber(2, 10);
054.                    } while (_den_1 == _den_2);
055. 
056.                }
057.                else if (_Den == "E_Int")//แบบมีจำนวนเต็ม
058.                {
059.                    int aa = RandomNumber.Randomnumber(1, 3000);
060.                    if (aa > 1500)
061.                    {
062.                        _den_2 = 1;
063.                        _den_1 = RandomNumber.Randomnumber(3, 10);
064.                    }
065.                    else
066.                    {
067.                        _den_1 = 1;
068.                        _den_2 = RandomNumber.Randomnumber(3, 10);
069.                    }
070. 
071.                    //  MessageBox.Show(_den_1 + "  " + _den_2);
072.                }
073.                else if (_Den == "E_Flc")//แบบมีจำนวนคละ
074.                {
075. 
076.                    _den_1 = RandomNumber.Randomnumber(5, 10);
077.                    _den_2 = RandomNumber.Randomnumber(5, 10);
078.                    _ext_1 = RandomNumber.Randomnumber(0, 10);
079.                    _ext_2 = RandomNumber.Randomnumber(0, 10);
080.                    /*int aa = RandomNumber.Randomnumber(1, 3000) ;
081.                    if (aa > 2000)
082.                    {
083.                        _ext_1 = RandomNumber.Randomnumber(1, 10);
084.                         
085.                    }
086.                    else if (aa < 1000)
087.                    {
088.                   
089.                        _ext_2 = RandomNumber.Randomnumber(1, 10);
090.                    }
091.                    else
092.                    {
093.                        _ext_1 = RandomNumber.Randomnumber(1, 10);
094.                        _ext_2 = RandomNumber.Randomnumber(1, 10);
095.                    }*/
096. 
097. 
098.                }
099. 
100. 
101.                // MessageBox.Show(_sop + "  " + Den);
102. 
103.                //ถ้าเป็นจำนวนเต็ม _den จะ เท่ากับ 1
104. 
105.                _a = (_den_1 == 1) ? RandomNumber.Randomnumber(1, 10) :
106.                ((_den_1 == 2) ? 1 : RandomNumber.Randomnumber(1, _den_1));
107.                _b = (_den_2 == 1) ? RandomNumber.Randomnumber(1, 10) :
108.                    ((_den_2 == 2) ? 1 : RandomNumber.Randomnumber(1, _den_2));
109. 
110.                a = _a;
111.                b = _b;
112.                den_1 = _den_1;
113.                den_2 = _den_2;
114.                ext_1 = _ext_1;
115.                ext_2 = _ext_2;
116. 
117.                if (Sop == "+-x÷")
118.                {
119. 
120.                    int aa = RandomNumber.Randomnumber(1, 4000);
121.                    switch (aa)
122.                    {
123.                        case int n when n > 3000:
124.                            _sop = "+";
125.                            break;
126.                        case int n when n <= 3000 && n > 2000:
127.                            _sop = "-";
128.                            break;
129.                        case int n when n <= 2000 && n > 1000:
130.                            _sop = "x";
131.                            break;
132.                        case int n when n <= 1000:
133.                            _sop = "÷";
134.                            break;
135.                        default:
136.                            _sop = "+";
137.                            break;
138. 
139.                    }
140.                }
141. 
142.                if (_sop == "-")
143.                {
144.                    double v_a = (Convert.ToDouble(((_ext_1 == 0) ? 1d : _ext_1)) * Convert.ToDouble(_den_1) + Convert.ToDouble(_a)) / Convert.ToDouble(_den_1);
145.                    double v_b = (Convert.ToDouble(((_ext_2 == 0) ? 1d : _ext_2)) * Convert.ToDouble(_den_2) + Convert.ToDouble(_b)) / Convert.ToDouble(_den_2);
146.                    //  MessageBox.Show($"{_a} + {_den_1}*{_ext_1} = {v_a}"  + "\n" + $"{_b} + {_den_2}*{_ext_2} = {v_b}" );
147.                    if (v_a > v_b)
148.                    {
149.                        a = _b;
150.                        b = _a;
151.                        den_1 = _den_2;
152.                        den_2 = _den_1;
153.                        ext_1 = _ext_2;
154.                        ext_2 = _ext_1;
155.                    }
156.                    else if (v_a == v_b)
157.                    {
158.                        b += (b == 1) ? 1 : RandomNumber.Randomnumber(1, b);
159.                    }
160. 
161.                }
162. 
163. 
164. 
165. 
166.                if (den_2 > 1)
167.                {
168.                    e.Graphics.DrawFraction(ext_2, b, den_2, xC + 10, yC);
169.                }
170.                else
171.                {
172.                    e.Graphics.DrawString(b.ToString(), new Font("Angsana New", 22), new SolidBrush(Color.Black), xC + 60, yC + 15);
173.                }
174. 
175.                e.Graphics.DrawString(_sop, new Font("Angsana New", 22), new SolidBrush(Color.Black), xC + 80, yC + 15);
176. 
177.                if (den_1 > 1)
178.                {
179.                    e.Graphics.DrawFraction(ext_1, a, den_1, xC + 100, yC);
180.                }
181.                else
182.                {
183.                    e.Graphics.DrawString(b.ToString(), new Font("Angsana New", 22), new SolidBrush(Color.Black), xC + 110, yC + 15);
184.                }
185. 
186. 
187.                e.Graphics.DrawString(" วิธีทำ# ", new Font("Angsana New", 20), new SolidBrush(Color.Black), xC + 200, yC + 5);
188.                yC += 150;
189. 
190.            }
191. 
192. 
193.            #endregion
194. 
195. 
196. 
197.            if (iPage > iPageAll - 1)
198.            {
199.                bNewPage = false;
200.                bMorePagesToPrint = false;
201.            }
202. 
203.            if (bNewPage)
204.            {
205.                printDocumentNewPage(sender, e);
206.            }
207. 
208.            iPage++;
209. 
210.            //If more lines exist, print another page.
211.            e.HasMorePages = (bMorePagesToPrint) ? true : false;
212.        }


จาก
Code (C#)
1.e.Graphics.DrawString($"test date ...../...../.......  by.......................  Print date {DateTime.Now.ToString("yyyyMMdd hhmmss")}  Page{iPage}/{iPageAll}", fontDetail, Brushes.Black, e.MarginBounds.Left -40, e.MarginBounds.Bottom + 40);


พบว่าตรงเวลา มันแปลกๆ ครับ ออกมาไม่เต็ม

11

22

33

แบบนี้ต้องแก้ยังไง ครับ



Tag : .NET, Win (Windows App), C#



ประวัติการแก้ไข
2023-10-11 09:40:56
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2023-10-11 09:39:50 By : lamaka.tor View : 407 Reply : 1
 

 

No. 1



โพสกระทู้ ( 9,590 )
บทความ ( 2 )



สถานะออฟไลน์


ความกว้างไม่สมดุล กับ font อักษร ปรับขนาด font ให้เล็กลง หรือขึ้นบันทัดใหม่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-10-12 09:56:51 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# winApp printDocument PrintPage สั่งปริ้นแล้วมีข้อความที่ทับกันอยู่ ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่