0

何か問題がある場合は、WPFを初めて使用します。協力してください。ここでは、専門家からのアイデアが必要です。

フォームにあるフィールドに入力した後、WPFフォームにコンテンツを表示する必要がある1つのアプリケーションに取り組んでいます。同じフォームに、印刷オプションもあります。

この画像を確認してください。これは私のフォームです。赤いブロックの部分は実行時に生成されます。印刷ボタンをクリックすると、紙に表示されている部分のみが表示され、残りの部分はスキップされます。

WPFフォーム

問題: 印刷をクリックしたときに、スクロール中のフォームの残りの部分を次のページに移動するにはどうすればよいですか。

たとえば、与えられた画像では、2つのブルズアイが完全に、次の2つが部分的にしか見えません。印刷をクリックしたときにのみ、この残りの部分を次のページに移動するにはどうすればよいですか。

4

2 に答える 2

2

答えは非常に簡単です。印刷をウィンドウに依存するのではなく、必要なビジュアルを作成してから印刷します。
たとえば、円などを動的に作成し、それらをパネルに追加する関数が必要です。あなたがするかもしれないことは、パネルを印刷することです。
または、必要に応じて、動的に新しいウィンドウを作成し、必要なすべてのデータを必要に応じて配置してから、ウィンドウを印刷することもできます。この方法の利点は、コンテンツに対してより柔軟であり(ヘッダー/フッターが必要な場合)、デバッグのためにコンテンツを簡単に監視できることです。ウィンドウのコンテンツが動的である場合でも、コードでxamlを実行しすぎないように、印刷用のベースウィンドウを作成できます(expl:印刷ウィンドウのコンストラクターで設定したPrintTitleプロパティにTextBoxをバインドする場合があります)。 ...)。
画面にレンダリングされなかったビジュアルは印刷されないことに注意してください。よくある問題を回避するために、このすばらしいサイトからこの記事を見るには、ここでコードをオンにしてください:
http ://www.switchonthecode.com/tutorials/printing-in-wpf

編集(コメントの質問に返信):
1)ブルズアイの数が決まっている場合は、その数に対して1つのウィンドウを作成して印刷するだけで、これは簡単です。
2)ビジュアルを行ではなくページに配置するには、ページの幅/高さに依存する必要があります。重要なのは、コントロールのサイズとページのサイズです。この例では、サイズとしてLineHeight、LineWidthを持つ(OnRenderで)コントロールを構築します。同じことを行います:(Control Height + margin)* NumberOfControlPerPage<PageHeightのようにできるだけ多くのコントロールラインを配置してみてください。
次に、長方形+テキストで作成された行の代わりにコントロールをレンダリングするようにOnRenderを変更する必要があります。コントロールを水平StackPanelに2つずつパックします。次に、それらのStackPanelを垂直StackPanelにパックしてから、レンダリングします。コントロールが最後にレンダリングされた各ページを追跡してから、次のコントロールでレンダリングを再開する必要があります。

于 2012-08-08T13:25:03.543 に答える
0

このリンクをたどってください。これは、Webの世界で検索した後に得た基本です。この基本的な詳細を使用して、WPFでの印刷であらゆることができます。

于 2012-08-09T11:51:27.363 に答える