2012-10-16 48 views
0

目前,我有一個用戶界面,用戶從列表中選擇產品。當他們雙擊他們選擇的產品時,另一個表格會顯示產品的附加信息以及相關的條形碼。在第二種形式中有一個打印按鈕。 (這是我的問題所在)點擊打印按鈕後,我希望將此信息發送到標籤模板並可查看(可能是通過PrintPage),然後可以從中發送到打印機。印刷標籤的最佳設計方法

完成此操作的最佳方法是什麼?我可以想出兩種不同的方法來實現這一點,但我相信有更好的方法。 1)我可以在XAML中創建模板,然後將數據綁定到表格 2)我可以在form.vb的_PrintPage事件中創建模板。 (最直接但不是最快)

  • 有沒有更簡單的方法來創建模板並將信息發送給它,然後打印模板?
  • 只需製作另一個窗體並以這種方式設計模板會更容易,但是可以在運行時將此窗體發送到打印對象嗎?
+0

我認爲值得注意的是,當我說Label時,我的意思是一個物理標籤可以粘貼到某個東西上,而不是表單上的標籤框。 – Brandon

回答

0

如果我正確理解你,你想在你自己的程序中控制過程而不使用報告工具?在這種情況下,我將列出關於一個實現的一些想法 -

您可以使用包含區域和區域類型的(可序列化)字典進行簡單的模板功能。當你與一個絕對的區域(標籤本身)工作,比如,你可以這樣做:

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例如。您可以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 

希望這給了一些輸入。

2

通常情況下,我必須打印,如標籤,我使用報告工具。 .Net帶有自己的Microsoft報告工具,http://msdn.microsoft.com/en-us/library/bb885185.aspx,還有很多第三方報告工具,如Crystal或Telerik。他們都有視覺設計師的佈局和處理所有打印預覽和打印的東西給你。

+0

感謝Kratz的迴應,我將研究這一點。 – Brandon