0

印刷プレビュー コードが機能しません。どうすればこれを機能させることができますか。助けていただければ幸いです。ありがとうございました。最後のチェックアウトの領収書を表示しようとしていますが、写真を貼り付けることができなかったので、次のようになります。

顧客 ID: 役職: 名前: Bob 住所: 車: 車の ID: アップグレード: 費用: 製品 ID: ショップ ID:

これらを印刷プレビュー画面の列レイアウトで表示したい。どうすればいいですか?

また、「変数 'LineToPrints' は以前に使用されており、null 値になる可能性があります」という警告が表示されます。

    Dim TitleFont As New Font("Courier New", 15, FontStyle.Bold)
    Dim MyFont As New Font("Courier New", 12, FontStyle.Regular)
    Dim MyFormat As String = "{0, 15}{1,15}"
    Dim LineToPrints As String
    Dim X As Integer
    Dim Y As Integer
    X = 15

    FontHeight = MyFont.GetHeight(e.Graphics)
    e.Graphics.DrawString("Checkout Receipt", TitleFont, Brushes.Black, X, Y)

    For Y = 15 To 165 Step 15
        Select Case Y
            Case 30
                LineToPrints = String.Format(MyFormat, "Customer ID: " & OneCustomer.CustomerID)
            Case 45
                LineToPrints = String.Format(MyFormat, "Title: " & OneCustomer.Title)
            Case 60
                LineToPrints = String.Format(MyFormat, "Name: " & Trim(OneCustomer.FirstName) & Trim(OneCustomer.LastName))
            Case 75
                LineToPrints = String.Format(MyFormat, "Address: " & OneCustomer.Address)
            Case 90
                LineToPrints = String.Format(MyFormat, "Car(s): " & OneBooking.Car)
            Case 105
                LineToPrints = String.Format(MyFormat, "Car ID: " & OneBooking.CarID)
            Case 120
                LineToPrints = String.Format(MyFormat, "Upgrades: " & OneBooking.Upgrade)
            Case 135
                LineToPrints = String.Format(MyFormat, "Cost: " & FormatCurrency(TotalCost))
            Case 150
                LineToPrints = String.Format(MyFormat, "Product ID: " & OneStock.ProductID)
            Case 165
                LineToPrints = String.Format(MyFormat, "ShopID: " & OneStock.ShopID)
        End Select
        e.Graphics.DrawString(LineToPrints, TitleFont, Brushes.Black, X, Y + 10)
        e.Graphics.DrawString("Thank You For Purchasing At 'Ford Mustaang Selection Buyout'.", TitleFont, Brushes.Black, X, Y)
    Next
4

1 に答える 1

0

発生しているエラーや発生している場所については詳しく説明していませんが、フォーマット文字列には 2 つのプレースホルダーがあり、毎回 1 つの引数しか渡していません。Dim MyFormat As String = "{0, 15}"ラベルと値を 15 文字に収めるString.Format(MyFormat, "Product ID:", OneStock.ProductID)場合、またはラベルと値を別々の列に配置する必要がある場合は、使用を検討してください。

注意: フィールドのメタデータを何らかのデータ構造に保存することを検討してくださいList(Of Tuple(Of String,Object))

Dim metadata = New List(Of Tuple(Of String, Object)) From {
    Tuple.Create("Customer ID", OneCustomer.CustomerID),
    Tuple.Create("Title", OneCustomer.Title),
    Tuple.Create("Name", CType(Trim(OneCustomer.FirstName) & Trim(OneCustomer.LastName),Object)),
    Tuple.Create("Address", OneCustomer.Address),
    Tuple.Create("Car(s)", OneBooking.Car),
    Tuple.Create("Car ID", OneBooking.CarID),
    Tuple.Create("Upgrades", OneBooking.Upgrade),
    Tuple.Create("Cost", CType(FormatCurrency(TotalCost),Object)),
    Tuple.Create("Product ID", OneStock.ProductID),
    Tuple.Create("Shop ID", OneStock.ShopID)
}

次に、次のようにレポートの各行を生成できます。

Dim line=String.Join("", metadata.Select(Function(t) String.Format("{0,15}: {1,15}", t.Item1, t.Item2))
于 2013-12-22T23:42:26.543 に答える