Hey iedereen.
Ik heb even een snel vraagje, ik zit met een probleem.
Na veel pijn en moeite heb ik voor elkaar weten te krijgen dat je kan printen vanuit 3 listboxen en dit netjes onder elkaar wordt gezet. natuurlijk met wat hulp van wat scripts op internet.
Nu zit ik echter met een probleem.
De tekst die geprint wordt wordt niet goed uitgelijnt.
het ziet er ongeveer als volgt uit:
wat ik echter wil hebben is het volgende:
Dat het iets meer duidelijk is.
ik gebruik de volgende code om dit uit te voeren:
een class voor het opbouwen van de pagina, de paginanummering voor als er meer dan 1 is, en natuurlijk de tekst ect.
Het opbouwen van het printdocument en een dialoog laten zien om een printer te selecteren.
Het echt opbouwen van de pagina, de tekst in de juiste font plaatsen en het printen deels verzorgen.
Nu vroeg ik mij af of iemand hier een idee voor heeft.
Het geven van meedere spaties in de opbouw (2e code stuk) zal geen nut hebben gezien die hem dan gewoon wat verder plaatst als het aantal karakters meer of minder is.
Nu zat ik er ook nog aan te denken om het aantal karakters te tellen en hiermee de lengte bepalen die er tussen moet zitten, dit is niet de makkelijkste oplossing maar wel mogelijk lijkt mij.
Heeft iemand misschien nog een simpele manier om dit uit te voeren ?
Groet,
vincent
Ik heb even een snel vraagje, ik zit met een probleem.
Na veel pijn en moeite heb ik voor elkaar weten te krijgen dat je kan printen vanuit 3 listboxen en dit netjes onder elkaar wordt gezet. natuurlijk met wat hulp van wat scripts op internet.
Nu zit ik echter met een probleem.
De tekst die geprint wordt wordt niet goed uitgelijnt.
het ziet er ongeveer als volgt uit:
code:
1
2
3
| Hardware - Number - Serial iets1 - nummertje - seriecode iets2 - nummer2 - ennogeenseriecode |
wat ik echter wil hebben is het volgende:
code:
1
2
| Hardware Number Serial Iets1 Nummertje Seriecode |
Dat het iets meer duidelijk is.
ik gebruik de volgende code om dit uit te voeren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| public class TextDocument : PrintDocument { private string[] text; private int pageNumber; private int offset = 0; public string[] Text { get { return text; } set { text = value; } } public int PageNumber { get { return pageNumber; } set { pageNumber = value; } } public int Offset { get { return offset; } set { offset = value; } } public TextDocument(string[] text) { this.Text = text; } } |
een class voor het opbouwen van de pagina, de paginanummering voor als er meer dan 1 is, en natuurlijk de tekst ect.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| private void button4_Click(object sender, EventArgs e) { int items = listBox1.Items.Count + 1; string[] printText = new string[items]; printText[0] = "Hardware - Number - Serial"; for (int i = 1; i != items; i++) { int num = i - 1; //printText[i] = i.ToString(); printText[i] = listBox2.Items[num].ToString() + " - " + listBox1.Items[num].ToString() + " - " + listBox3.Items[num].ToString(); } PrintDocument doc = new TextDocument(printText); doc.PrintPage += this.Doc_PrintPage; PrintDialog dlgSettings = new PrintDialog(); dlgSettings.Document = doc; if (dlgSettings.ShowDialog() == DialogResult.OK) { doc.Print(); } } |
Het opbouwen van het printdocument en een dialoog laten zien om een printer te selecteren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| using (Font font = new Font("Arial", 10)) { float lineHeight = font.GetHeight(e.Graphics); float x = e.MarginBounds.Left; float y = e.MarginBounds.Top; doc.PageNumber += 1; while ((y + lineHeight) < e.MarginBounds.Bottom && doc.Offset <= doc.Text.GetUpperBound(0)) { e.Graphics.DrawString(doc.Text[doc.Offset], font, Brushes.Black, x, y); doc.Offset += 1; y += lineHeight; } if (doc.Offset < doc.Text.GetUpperBound(0)) { e.HasMorePages = true; } else { doc.Offset = 0; } } |
Het echt opbouwen van de pagina, de tekst in de juiste font plaatsen en het printen deels verzorgen.
Nu vroeg ik mij af of iemand hier een idee voor heeft.
Het geven van meedere spaties in de opbouw (2e code stuk) zal geen nut hebben gezien die hem dan gewoon wat verder plaatst als het aantal karakters meer of minder is.
Nu zat ik er ook nog aan te denken om het aantal karakters te tellen en hiermee de lengte bepalen die er tussen moet zitten, dit is niet de makkelijkste oplossing maar wel mogelijk lijkt mij.
Heeft iemand misschien nog een simpele manier om dit uit te voeren ?
Groet,
vincent