Member 9983063 Ответов: 1

Я хочу выровнять квитанцию в C#


Здравствуйте, ребята, пожалуйста, помогите мне я хочу знать, что я сделал ресторанное программное обеспечение, когда я печатаю квитанцию, это печатает квитанцию, но выравнивание так, что элементы отображаются в строке, но я хочу выровнять текст цены на квитанции.

Что я уже пробовал:

private void printreceipt()
        {
            PrintDialog printdialog = new PrintDialog();
            PrintDocument printdocument = new PrintDocument();
            PaperSize bp = new PaperSize("Custom", 100, 200);
            printdialog.Document = printdocument;
            printdocument.PrintPage += new PrintPageEventHandler(printdocument_PrintPage);
            printdocument.DefaultPageSettings.PaperSize = bp;
            printdocument.DefaultPageSettings.PaperSize.Height =;
            printdocument.DefaultPageSettings.PaperSize.Width = 320;
            printdocument.PrinterSettings.PrinterName = setaluefortextprinter;
            //DialogResult result = printdialog23.ShowDialog();
            //if (result == DialogResult.OK)
            //{
            printdocument.Print();
            //}
        }
        void printdocument_PrintPage(object sender, PrintPageEventArgs e)
        {
            Graphics graphics = e.Graphics;
            Font f = new Font("Arial", 8);
            float fontHeight = f.GetHeight();
            int starto = 30;
            int startp = 6;
            int startX = 10;
            int startY = 10;
            int offset = 40;
            int offset1 = 260;
            int offset2 = 280;
            int line = 1;
            int line1 = 5;
            int line2 = 6;
            int line3 = 24;
            int line4 = 124;
            int line5 = 32;
            int line6 = 20;
            int line7 = 3;
            int line8 = 6;
            int line9 = 32;
            int offset3 = 160;
            int offset4 = 170;
            int offset5 = 180;

            //graphics.DrawString(label131.Text, new Font("Courier New", 6), new SolidBrush(Color.Black), line, line1);
            graphics.DrawString(setaluefortext00001name, new Font("Courier New", 15), new SolidBrush(Color.Black), starto, startp);
            graphics.DrawString("*************************************************************************************", new Font("Courier New", 6), new SolidBrush(Color.Black), line2, line3);
            graphics.DrawString(label4.Text, new Font("Courier New", 6), new SolidBrush(Color.Black), line8, line9);
            //graphics.DrawString("Receipt#:" + label2.Text, new Font("Courier New", 6), new SolidBrush(Color.Red), line4, line5);
            foreach (tblProduct product in products)
            {
                string productDescription = product.productName;
                string productTotal = " Rs " + string.Format("{0:}", product.productPrice);
                string prodcutLine = productDescription + productTotal;

                graphics.DrawString(prodcutLine, f, new SolidBrush(Color.Black), startX, startY + offset);

                offset = offset + (int)fontHeight + 5;
            }
            offset = offset + 20;
            tblTransaction transaction = new tblTransaction();
            transaction.transactionDate = DateTime.Now;
            graphics.DrawString("Total To Pay".PadRight(15) + "Rs " + string.Format("{0:}", total), f, new SolidBrush(Color.Black), startX, startY + offset);
            graphics.DrawString("Thank You For Coming,".PadRight(15) + string.Format(""), f, new SolidBrush(Color.Black), startX, startY + offset3);
            graphics.DrawString("Please Come Back Soon".PadRight(15) + "" + string.Format(""), f, new SolidBrush(Color.Black), startX, startY + offset4);
            //graphics.DrawString("03147450301".PadRight(15) + "" + string.Format(""), f, new SolidBrush(Color.Black), startX, startY + offset5);

1 Ответов

Рейтинг:
0

Duncan Edwards Jones

Существует перегрузка DrawString, которая позволяет указать выравнивание текста в пределах заданного прямоугольника - например, см. статью Класс для печати и предварительного просмотра элемента управления DataGrid или DataGridView[^]

Используйте это вместо того, чтобы пытаться заполнить строку пробелами.


Member 9983063

Эй братан спасибо за ваш ответ но это статьи не помогают мне пожалуйста вы скажите мне какую вещь я использую неправильно в моем коде

Duncan Edwards Jones

Вы используете PadRight для выравнивания текста.
Не используйте это.

Используйте StringAlignment.

Member 9983063

сэр я новичок в программировании не могли бы вы сказать мне что такое выравнивание строк

Duncan Edwards Jones

См. эту документацию Microsoft по функции DrawString, которую вы используете для печати:- https://msdn.microsoft.com/en-us/library/21kdfbzs(v=против 110). aspx