Преобразование и печать содержимого структуры в форму в Visual Basic - PullRequest
0 голосов
/ 27 октября 2010

Я пытаюсь распечатать содержимое структуры на странице печати в Visual Basic (Visual Studio 2008).Однако my для каждого цикла генерирует ошибку преобразования?Может ли кто-нибудь помочь мне понять, что не так?Спасибо

Public Class Form1</p> <pre><code>Structure IncomeRecord Dim IDVal As Integer Dim HouseholdNum As Integer Dim YearlyIncome As Integer End Structure Dim ArrayOfData(100) As IncomeRecord Dim ArrayofDataIndex As Integer = -1 Dim PovertyLevels(,) As Integer = {{1, 10210}, {2, 13690}, {3, 17170}, {4, 20650}, {5, 24130}, {6, 27610}, {7, 31090}, {8, 34570}} Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click Me.Close() End Sub Private Sub EnterDataToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EnterDataToolStripMenuItem.Click Dim IDVal As Integer Dim HouseholdNum As Integer Dim YearlyIncome As Integer IDVal = Integer.Parse(TextBox1.Text) HouseholdNum = Integer.Parse(TextBox3.Text) YearlyIncome = Decimal.Parse(TextBox2.Text) ArrayofDataIndex += 1 ArrayOfData(ArrayofDataIndex).IDVal = IDVal ArrayOfData(ArrayofDataIndex).HouseholdNum = HouseholdNum ArrayOfData(ArrayofDataIndex).YearlyIncome = YearlyIncome TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" End Sub Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim PrintFont As New Font("Arial", 12) Dim HeadingFont As New Font("Arial", 14, FontStyle.Bold) Dim LineHeightSingle = PrintFont.GetHeight + 2 Dim Column1HorizontalLocationSingle As Single = e.MarginBounds.Left Dim VerticalPrintLocationSingle As Single = e.MarginBounds.Top Dim Column2HorizontalLocationSingle As Single = 300 Dim Column3HorizontalLocationSingle As Single Dim PrintLineString As String Dim FontSizeF As New SizeF Dim FormattedPriceString As String PrintLineString = "Income Survey-Listing All Input Data" e.Graphics.DrawString(PrintLineString, HeadingFont, _ Brushes.Black, Column2HorizontalLocationSingle, VerticalPrintLocationSingle) VerticalPrintLocationSingle += LineHeightSingle e.Graphics.DrawString(PrintLineString, PrintFont, _ Brushes.Black, Column2HorizontalLocationSingle, VerticalPrintLocationSingle) For Each ElementString As String In ArrayOfData e.Graphics.DrawString(ElementString, PrintFont, _ Brushes.Black, Column2HorizontalLocationSingle, VerticalPrintLocationSingle) Column2HorizontalLocationSingle += 200 Next Column1HorizontalLocationSingle = e.MarginBounds.Left VerticalPrintLocationSingle += LineHeightSingle End Sub Private Sub AllDataToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AllDataToolStripMenuItem.Click PrintPreviewDialog1.Document = PrintDocument1 PrintPreviewDialog1.ShowDialog() End Sub

Конечный класс

1 Ответ

0 голосов
/ 06 ноября 2010

глядя на ваш цикл for, ваш ArrayOfData имеет тип IncomeRecord, поэтому он жалуется.Если включить опцию Option Strict на вкладке Project Propertys Compile, вы поймете проблемы, как указано выше, когда вы их вводите.Попробуйте что-то вроде этого

    For Each ElementIncome As IncomeRecord In ArrayOfData
        e.Graphics.DrawString(ElementIncome.IDVal.ToString, PrintFont, _
                      Brushes.Black, Column2HorizontalLocationSingle, VerticalPrintLocationSingle)
        Column2HorizontalLocationSingle += 200

        e.Graphics.DrawString(ElementIncome.HouseholdNum.ToString, PrintFont, _
                     Brushes.Black, Column2HorizontalLocationSingle, VerticalPrintLocationSingle)
        Column2HorizontalLocationSingle += 200

        e.Graphics.DrawString(ElementIncome.YearlyIncome.ToString, PrintFont, _
                     Brushes.Black, Column2HorizontalLocationSingle, VerticalPrintLocationSingle)
        Column2HorizontalLocationSingle += 200

    Next
...