Új oldalra nyomtatás c#

Új oldalra nyomtatás c#
2015-12-15T22:44:59+01:00
2015-12-15T23:48:56+01:00
2022-10-15T21:51:43+02:00
Ghost5650
Sziasztok!

Tudom ,hogy nagyon sok helyen már felmerült a probléma, de sehol se találtam olyan megoldást amire nekem szükségem lenne.

A lényeg az ,hogy pl sorban a számokat ki szeretném nyomtatni 1-100 ig. Minden oldalra 10 számot.

De a HasMorePages funkciót valahogy nem "akarom" megérteni.

Elvileg ha a szamlalo 10 lesz akkor új lapot kéne adni, de nem, folytatódik addig amíg be nem telik a lap... illetve tovább, csak az már nem látszik.

Mi lehet az oka?

A segítségeteket előre is köszönöm

private void pd_PrintPage(object sender, PrintPageEventArgs ev) { float yPos = 0; int count = 0; float leftMargin = ev.MarginBounds.Left; float topMargin = ev.MarginBounds.Top; String line=null; int a=0; int szamlalo = 0; for (int i = 0;i<101;i++) { szamlalo++; yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString (i.ToString(), printFont, Brushes.Black,leftMargin, yPos, ne w StringFormat()); count++; if (szamlalo>9) { szamlalo =0; ev.HasMorePages = true; } else { ev.HasMorePages = false; } } } public void Printing() { printFont = new Font("Arial", 10); PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); // Print the document. pd.Print(); }
Mutasd a teljes hozzászólást!
Ugyan nem értek a C#-hoz, de a doksi alapján a HasMorePages tulajdonság állítgatása a PrintPage kezelőben semmi hatással nem jár, csak megjegyzi az utoljára beleírt értéket. Viszont amikor az eseménykezelőd visszatér, a Print() metódus ránéz erre a tulajdonságra, és ha igaznak látja, akkor újra fogja hívni az eseménykezelőt a következő lap megrajzolásához.

Szóval ne egyszerre, egy hívásban akard kirajzolni az összes oldalt, hanem csak egy oldalnyit rajzolj, és ha nem végeztél még, akkor a HasMorePages-t állítsd true-ra visszatérés előtt. Ehhez az is kell, hogy valahol a metóduson kívül tárold a rajzolás állapotát (milyen szám következik), mert nyilván a lokális változóid nem maradnak meg két hívás között.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd