Viděl bych to, že chyba bude někde v této části:
...
for (int j = 0; j < pocet_otazek; j++)
{
tady provedu dotaz a tisk pomoci
e.Graphics.DrawString
}
//a tady provedu test
if (okraj >= e.MarginBounds.Bottom)
...
Nevím, jak přesně máš udělaný tisk, ale myslím si, že pokud tiskneš něco jako tabulku, by bylo vhodné testovat, zda nebylo dosaženo konce stránky po tisku každého řádku.
To znamená tisk jednotlivého řádku uzavřít do příkazu
while(/* tady testovat podmínky: negace(je konec sestavy?) nebo(||) (negace)je konec stránky? */){
...
// Tady bude tisk jednotlivého řádku ...
}
...
// Dál pokračujeme testem, zda bude další stránka
if (/* je konec sestavy? */) {
e.HasMorePages = false;
} else {
e.HasMorePages = true;
}
Moje odpověď je taková schématická, pokud Ti to není jasné hoď se kousek kódu procedury printDoc_PrintPage.