Va salut dragi prieteni, astazi m-am gadit sa va prezint cum puteti creea un program care genereaza o facutra/chitanta in C#. O sa va pun pasii pe care trebuie sa ii urmati pentru crearea aplicatiei de la 0, cu explicatii suplimentare la cod.
Pentru inceput, intrati in Visual Studio si creati o aplicatie de tip Windows Forms Application.
Dupa ce ati creat aplicatia, luati din Toolbox:
- 2 Label-uri
- 2 Controale dateTimePicker
- Un buton
O posibila interfata pentru forma este mai jos:
Pentru inceput va trebui sa initializam formatul pentru dateTimePicker1 si dateTimePicker2 si sa setam data minima pe care o poti alege pentru o chitanta/factura, la data actuala:
dateTimePicker1.MinDate = dateTimePicker2.MinDate = DateTime.Now; dateTimePicker1.Format = DateTimePickerFormat.Custom; dateTimePicker2.Format = DateTimePickerFormat.Custom;
Crearea chitantei:
Pentru a creea previzualizarea, trebuie sa facem un PrintPreviewDialog adaugand:
using System.Drawing.Printing
In continuare vom creea documentul si il vom printa printr-un event apelat printr-o expresie lambda:
p.Document = new PrintDocument(); p.Document.PrintPage += (a,b) => { b.Graphics.DrawString(dateTimePicker1.Value.ToShortDateString,DefaultString(),DefaultFont,Brushes.Black,10,160); b.Graphics.DrawString(dateTimePicker2.Value.ToShortDateString,DefaultString(),DefaultFont,Brushes.Black,10,210); }; p.ShowDialog();
Ce face mai exact lambda in acest caz si cum putem genera o chitanta cu acesta?
Este foarte usor, lambda practic, in acest caz, ne ajuta sa nu mai creem un nou Event pentru PrintPage. Spre exemplu daca dorim sa se execute ceva in momentul in care apasam pe un buton, se va apela Eventul Click care are 2 parametrii si anume Object sender si EventArgs e. Prin urmare am folosit lambda ca o alternativa a utilizarii Event-urilor.
Cine sunt a si b ?
a si b sunt cei doi parametrii ai event-ului, daca o sa faci Event-ul separat fara lambda si in loc de b vei inlocui cu e , vei observa ca totul functioneaza ca inainte. Aceasta utilizare mai poate fi folosita si in situatia formelor dinamice, un exemplu concret ar fi:
Presupunem ca as vrea sa fac un buton pentru fiecare trimis de catre utilizator, deci butoanele vor fi create in momentul in care utilizatorul trimite un tichet. Insa as dori ca in momentul in care apas pe buton sa ma duca in pagina cu tichetul respectiv butonului. In acest caz vom folosi lambda pentru a apela Event-ul Click. Pentru alte utilizari ale expresiei lambda puteti citi si acest articol: https://tutoriale-pe.net/rezolvarea-unei-cerinte-de-la-nationala-de-c-sharp-in-mai-multe-moduri/
Link video youtube: https://www.youtube.com/watch?v=8GSNRkiSPrc