0

現在、ユーザーがリストから製品を選択するUIがあります。選択した製品をダブルクリックすると、別のフォームに、いくつかの追加情報と関連するバーコードを含む製品が表示されます。この2番目のフォームには、印刷ボタンがあります。(これが私の質問です)印刷ボタンがクリックされたときに、この情報をラベルテンプレートに送信して表示可能にし(おそらくPrintPageを介して)、そこからプリンターに送信できるようにします。

これを達成するための最良の方法は何ですか?これを達成するための2つの異なる方法を考えることができますが、そこにはもっと良い方法があると確信しています。1)XAMLでテンプレートを作成してから、フォームにデータバインドできます。2)form.vbの_PrintPageイベントでテンプレートを作成できます。(最も簡単ですが、最速ではありません)

  • テンプレートを作成して情報を送信し、テンプレートを印刷する簡単な方法はありますか?
  • 別のWindowsフォームを作成し、そのようにテンプレートを設計する方が簡単ですが、実行時にこのフォームを印刷オブジェクトに送信することは可能ですか?
4

2 に答える 2

2

通常、ラベルなど、印刷する必要があるものはすべて、レポートツールを使用します。.Netには、独自のMicrosoftレポートツールhttp://msdn.microsoft.com/en-us/library/bb885185.aspxが付属しており、CrystalやTelerikなどのサードパーティのレポートツールが多数あります。それらはすべてレイアウト用のビジュアルデザイナーを持っており、すべての印刷プレビューと印刷物を処理します。

于 2012-10-16T12:52:45.217 に答える
0

私があなたを正しく理解しているなら、あなたはレポートツールを使わずにあなた自身のプログラム内でプロセスをコントロールしたいですか?その場合、私は1つの実装についてのいくつかの考えをリストします-

リージョンとリージョンタイプを含む(シリアル化可能な)ディクショナリを使用して、単純なテンプレート機能を作成できます。絶対領域(ラベル自体)を操作する場合、たとえば次のようにすることができます。

Private Template as Dictionary = New dictionary(Of String, TemplateEntry)

Friend Class TemplateEntry
    Public MeasureType As MeasureType
    Public RegionType As Regiontype
    Public X As Single
    Public Y As Single
    Public Width As Single
    Public Height As Single
    Public Content as Object
End Class

Friend Enum MeasureType
    Centimeters
    Millimeters
    Inches
    Pixels
    '...
End Enum

Friend Enum RegionType
    Text
    [Image]
    BarCode
    '...
End Enum

次に、コードでx、y、w、hをDPIに基づいてピクセルに変換し、Rectangleたとえばaを返します。辞書をXMLシリアル化して、他のテンプレートなどを作成できます。

フィールドは、Content解析時に初期化されます。

追加するには、たとえば次のようにします。

Dim tmpl As TemplateEntry = New TemplateEntry
tmpl.MeasureType = MeasureType.Millimeters
'...

Template.Add("Barcode", tmpl)

次に、テンプレートをキャンバスに「レンダリング」して印刷します。

For Each tLine in Template
    Dim r as rectangle = CalcMeasuresIntoPixels(tmpl)
    '...
    ' render each element based on type and location
Next

これがいくつかの入力を与えたことを願っています。

于 2012-10-16T14:36:28.953 に答える