Member 12233583 Ответов: 1

Как подготовить квитанцию о школьном платеже в окне приложения C#


Я подготовил дизайн квитанции, приведенный ниже в блокноте(.txt)

School Name
   School Address
-----------------------------------------------
Receipt No: 66666           Date: 28/1/2017
Name:Sandeep kumar singh    Class X-A 
F. Name :Mahendra singh Month :February 
------------------------------------------------
Particular   Payable       Paid
------------------------------------------------
Tution Fee    500          500
Transport     700          700
Exam Fee      100          100
------------------------------------------------
Total         1300         1300
------------------------------------------------
Dues:0       
       
                              Signature
-------------------------------------------------



Но я хочу обновить детали квитанции, такие как сведения о студенте,название школы,адрес Etc.in блокнот когда студент вносит свой гонорар, то его детализация должна быть напечатана.

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

private void btn_print_Click(object sender, EventArgs e)
        {
             
            try
            {
                streamToPrint = new StreamReader("D:\\ZDXC.txt");
                try
                {
                    printFont = new Font("Verdana", 10);
                    PrintDocument pd = new PrintDocument();
                    pd.PrintPage += new PrintPageEventHandler
                       (this.printDocument1_PrintPage);
                    pd.Print();
                }
                finally
                {
                    streamToPrint.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
   
        private void printDocument1_PrintPage(object sender, PrintPageEventArgs ev)
        {
            float linesPerPage = 0;
            float yPos = 0;
            int count = 0;
            float leftMargin = ev.MarginBounds.Left;
            float topMargin = ev.MarginBounds.Top;
            string line = null;

            // Calculate the number of lines per page.
            linesPerPage = ev.MarginBounds.Height /
               printFont.GetHeight(ev.Graphics);

            // Print each line of the file.
            while (count < linesPerPage &&
               ((line = streamToPrint.ReadLine()) != null))
            {
                yPos = topMargin + (count * printFont.GetHeight(ev.Graphics));
                ev.Graphics.DrawString(line, printFont, Brushes.Black,
                   leftMargin, yPos, new StringFormat());
                count++;
            }

            // If more lines exist, print another page.
            if (line != null)
                ev.HasMorePages = true;
            else
                ev.HasMorePages = false;
        }

CHill60

Требуется немного более подробная информация о проблеме

1 Ответов

Рейтинг:
0

OriginalGriff

Преобразуйте файл Блокнота в шаблон с "разделителями полей", где вам нужно заменить данные:

{SchoolName}
   {SchoolAddress}
-----------------------------------------------
Receipt No: {RecNo}           Date: {Date}
Name: {StudName}    Class {StudClass}
F. Name : {FName} Month : {Month}
------------------------------------------------
Particular   Payable       Paid
------------------------------------------------
Tution Fee    {TFDue}      {TFPaid}
Transport     {TRDue}      {TrPaid}
Exam Fee      {EFDue}      {EFPaid}
------------------------------------------------
Total         {TotDue}     {TotPaid}
------------------------------------------------
Dues: {Dues}       
       
                              Signature

-------------------------------------------------

Тогда вы можете просто использовать строку.Заменить на "заполнить пробелы":
string receipt = template.Replace("{SchoolName}", "Myschool");
receipt = receipt.Replace("{SchoolAddress}", "TheBigBuildingFullOfStudents, This Road, That town");
receipt = receipt.Replace("{RecNo}", (receiptNo++).ToString());
receipt = receipt.Replace("{Date}", DateTime.Now.ToShortDateString());
...
Попробуйте-и вы поймете, что я имею в виду!


Member 12233583

Меня путают со строкой "шаблон", где я должен ее объявить.
Спасибо

OriginalGriff

"Преобразуйте файл Блокнота в шаблон с "разделителями полей", где вам нужно заменить данные"
Затем считайте файл в строку под названием "шаблон"...

Member 12233583

Спасибо, что я сделал...большое спасибо

OriginalGriff

Пожалуйста!

Member 12233583

В соответствии со школьными требованиями.Список сборов может быть увеличен или уменьшен каждый месяц, тогда как мы можем справиться с этим.

Конкретная Кредиторская Задолженность Оплачена
------------------------------------------
Tution Fee {TFDue} {TFPaid}
Транспорт {TRDue} {TrPaid}
Плата За Экзамен {EFDue} {EFPaid}

OriginalGriff

Вы заменяете запись шаблона текущим значением...вот и вся идея...

Member 12233583

ВАР fee_detail = "";
List< string> list = новый список & lt;string>();
для (тип int я = 0; Я &л; DS2 у.Таблицы[0].Строк.Граф; i++)
{
список.Добавить(DS2 у.Таблицы[0].Строки[я]["fee_name"].Метод toString());
список.Добавить(DS2 у.Таблицы[0].Строки[я]["fee_amount"].Метод toString());
строка txt = "";
foreach (строка s в списке)
{
txt += s + " \t";
}
fee_detail = тхт;
}
квитанция = receipt. Replace ("{FeeName}", fee_detail);

уважаемый господин,
ниже этой линии
fee_detail = тхт;
у меня есть символ вставки новой строки, но "\n "или" \r\n " не работают .
Пожалуйста, помогите мне.