2010-10-27 7 views
0

Je tente d'imprimer le contenu d'une structure sur une page d'impression dans Visual Basic (visual studio 2008). Cependant, mon pour chaque boucle génère une erreur de conversion? Quelqu'un pourrait-il m'aider à comprendre ce qui ne va pas? MerciConvertir et imprimer le contenu de la structure dans un formulaire dans Visual Basic

Public Class Form1

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 

End Class

+0

Pourriez-vous poster le texte de l'erreur? –

+0

La valeur du type 'WindowsApplication1.Form1.IncomeRecord' ne peut pas être convertie en 'String'. – Isaac

+0

Entrez le débogueur et vérifiez cette valeur! Le plus d'informations que vous postez, meilleures sont les réponses –

Répondre

0

regardant votre boucle votre ArrayOfData est de type IncomeRecord qui est la raison pour laquelle il se plaint. Si vous activez Option Strict dans l'onglet Compiler les propriétés du projet, vous rencontrerez des problèmes comme ci-dessus lorsque vous les entrez. Essayez quelque chose comme ceci

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