首页 > 解决方案 > 如何将结构的实例显示为字符串 vb.net?

问题描述

我的目标是能够在Structure不使用 a 的情况下将 a 作为收据打印出来SortedList

结构

Private Structure Facture
    Dim noClient As String
    Dim nom As String
    Dim prenom As String
    Dim adresse As String
    Dim ville As String
    Dim province As String
    Dim codePostal As String
    Dim courriel As String
    Dim noTel As String
    Dim noProduit As String
    Dim marque As String
    Dim modele As String
    Dim annee As String
    Dim couleur As String
    Dim categorie As String
    Dim noSerie As String
    Dim prix As String
    Dim dateVente As String
End Structure

结构实例

Private Function getFacture(ByVal ID As Integer) As Facture
    Dim receipt As Facture
    receipt.noClient = mtxtNoClient.Text
    receipt.nom = txtNom.Text
    receipt.prenom = txtPrenom.Text
    receipt.adresse = txtAdresse.Text
    receipt.ville = txtVille.Text
    receipt.province = CboProvince.Text
    receipt.codePostal = mtxtCodePostal.Text
    receipt.courriel = txtCourriel.Text
    receipt.noTel = mtxtNoTel.Text
    receipt.noProduit = mtxtNoProduit.Text
    receipt.marque = txtMarque.Text
    receipt.modele = txtModele.Text
    receipt.annee = mtxtAnnee.Text
    receipt.couleur = txtCouleur.Text
    receipt.categorie = txtCategorie.Text
    receipt.noSerie = txtNoSerie.Text
    receipt.prix = mtxtPrix.Text
    receipt.dateVente = dtpickerDateVente.Text
    Return (receipt)

End Function

我需要在一个字符串数组旁边打印它。

格式

Private Sub btnAfficherVente_Click(sender As Object, e As EventArgs) Handles btnAfficherVente.Click

    ' gotta read each line and print them as toString formatted for facturation 
    Dim infoProduit As String() = New String() {"No de client:", "Nom:", "Prénom:", "Adresse:", "Ville:", "Province:", "Code Postal:", "Courriel:", "Téléphone:",
        "No de produit:", "Marque:", "Modèle:", "Année:", "Couleur:", "Catégorie:", "No de série:", "Prix:", "Date de vente:"}

    'Output in facturation formatted text
    Dim i As Integer = 0
    Do While i < infoProduit.Length
        If i = 9 Then
            txtFacturation.Text += vbCrLf + "==============================================" + vbCrLf
        End If
        txtFacturation.Text += String.Format("{0, -20}", infoProduit(i)) & vbTab & getFacture(i).ToString & vbCrLf
        i += 1
    Loop
End Sub

输出

在此处输入图像描述

我查看了有关 StackOverflow 的文档和多个问题。大多数答案都是关于使用Dictionnary,CollectionSortedList.

文档中,我发现的唯一一件事是覆盖ToString()in Structure,这对我不起作用,因为这意味着我必须单独格式化它们,ToString但这会弄乱最终输出,因为我必须将它打印在一个 Array 旁边字符串。

标签: vb.net

解决方案


我会使用类而不是结构。但是您需要在结构中使用一个方法来返回所需的文本。

Private Structure Facture
    Dim noClient As String
    Dim nom As String
    Dim prenom As String
    Dim adresse As String
    Dim ville As String
    Dim province As String
    Dim codePostal As String
    Dim courriel As String
    Dim noTel As String
    Dim noProduit As String
    Dim marque As String
    Dim modele As String
    Dim annee As String
    Dim couleur As String
    Dim categorie As String
    Dim noSerie As String
    Dim prix As String
    Dim dateVente As String

    Function obtenirFactureTexte() As String

        Dim resultat As String = ""

        resultat &= "No de client: " & noClient & vbCrLf
        resultat &= "Nom: " & nom & vbCrLf
        resultat &= "Prénom: " & prenom & vbCrLf
        ' ...

        Return resultat
    End Function

End Structure

Sub Main()

    Dim nouvelleFacture As New Facture

    nouvelleFacture.noClient = "123"
    nouvelleFacture.nom = "Lagare"
    nouvelleFacture.prenom = "Bob"

    Console.Write(nouvelleFacture.obtenirFactureTexte())

End Sub

然后,您可以使用该方法在任何地方输出结果。

txtFacturation.Text = getFacture(i).obtenirFactureTexte()

推荐阅读