2012-01-05 117 views
0

Visual Studio 2010 Enterpriseがあります。 他のすべてのものに対して完全に機能するコードですが、実行時に余白が変更されることはありません。 objRpt.PrintOptions.PageMargins.leftMargin,rightmarginなどの値が変更されていますが、CyrstalReportViewerHardcopy出力には反映されません。Visual Studio 2010でCrystal Reportsの余白が実行時に変更されない

CrystalReport1 objRpt; 
objRpt = new CrystalReport1(); 
adepter.Fill(Ds, "Customer"); 
objRpt.SetDataSource(Ds); 
MessageBox.Show("Left margin:"+objRpt.PrintOptions.PageMargins.leftMargin.ToString()); //Here it shows 1440 

objRpt.PrintOptions.PrinterName = "HP LaserJet 1020"; 
PageMargins margins = objRpt.PrintOptions.PageMargins; 

margins.bottomMargin = 350; 
margins.leftMargin = 350; 
margins.rightMargin = 350; 
margins.topMargin = 350; 
objRpt.PrintOptions.ApplyPageMargins(margins); 
MessageBox.Show("Left margin:"+objRpt.PrintOptions.PageMargins.leftMargin.ToString()); 

//Here it shows 350 BUT no use. 

私がレポート>デザイン>ページ設定]を右クリックして、設計時にマージンを設定するために管理:ここで

コードがあります。ここで設定すると、余白は完全に機能し、レポートビューアとハードコピーの両方に反映されます。しかし、私が上記のコードを使用した場合、これは起こりません。

答えて

0

Crystal Reports Viewerを使用している場合はCrystal Reportsの余白の設定がデフォルトのプリンタ設定で上書きされているように見えます(WindowsフォームのCrystal Reports Viewerでは少なくとも印刷ボタンをクリックしてください)。レポートビューアの上部)をクリックします。これを回避するには、独自の印刷ボタンを使用して、独自のマージン設定を考慮したPrintToPrinterを呼び出すことが考えられます。その他の回避策が含まれます: を - マージン を模倣する必要が空白でレポートを編集する - (私は私の頭の上から関数呼び出しの名前を思い出すことができない)、その後 を印刷呼び出しをインターセプトし、余白を調整 - レポートのデフォルトプリンタを「プリンタなし」に設定します。レポートビューアからプリンタを選択するときは、デフォルトのプリンタ設定が適用されます。

IDカードを印刷するアプリケーションで作業するとき、この問題が発生しました。 PrintToPrinter()を呼び出すことで、カードには余裕ができません。レポートビューアを通してそれを実行し、印刷ボタンをクリックすると、プリンタのデフォルト設定を使用することが強制する - 。。0.17" 程度の余裕を持って結果が正しく印刷されませんでしカード

+0

た助けてくれてありがとう私はすでに問題を解明していますが、ここで私自身の質問に答えることができるかどうかわからないので、StackOverflowで禁止される恐れがかなりあります。 –

+0

[this post](http:// meta。 stackexchange.com/questions/12513/should-i-not-answer-my-own-questions)(実際には多くの他の人に)メタについては、あなた自身の質問に答えることはまったくうまくいくようです。 – GusP

関連する問題