首页 > 解决方案 > VB .Net 对象列表中的对象列表

问题描述

我有一个程序可以将满足条件的对象列表中的两个对象结合起来。

我的问题是已婚对象的第二个列表没有正确显示,我不知道我是否做错了什么。

这是我的代码。我有这个类的属性等:

Public Class Gallo
    Dim taquilla As Integer
    Dim libras As Integer
    Dim onzas As Integer
    Dim puya As Integer
    Dim tuerto As Boolean
    Dim puntos As Decimal
    Dim excluir(3) As Integer

使用这个类,我比较这些值,如果其中两个满足条件,我想将这两个对象添加到另一个名为Married



Public Class Casados
    Dim casado1 As Gallo
    Dim casado2 As Gallo

    Public Sub New(casado1 As Gallo, casado2 As Gallo)
        Me.casado1 = casado1
        Me.casado2 = casado2
    End Sub

    Public Property casado1P
        Get
            Return casado1
        End Get
        Set(value)
            casado1 = value
        End Set
    End Property

    Public Property casado2P
        Get
            Return casado2
        End Get
        Set(value)
            casado2 = value
        End Set
    End Property
End Class

我列出了那个名为casados

Private misCasados As New List(Of Casados)

然后,当两个对象满足我添加到该列表的条件并在 datagridview 中显示它们时。

                If diferenciaTotal < 2 And diferenciaTotal > -2 Then
                    Dim casados As Casados
                    casados = New Casados(misGallos(i), misGallos(j))
                    misCasados.Add(casados)
                End If
            End If
        Next j
    End If
Next i

dataCasados.DataSource = ""
dataCasados.DataSource = misCasados
For i = 0 To misCasados.Count - 1
    Console.WriteLine()
    Console.WriteLine(misCasados(i))
Next

问题是 datagridview 中显示的信息只是Gallos.Gallo(类名)而不是我想要的信息。我想显示哪些对象已结婚并显示 idTaquilla以知道他们是谁。

标签: .netvb.net

解决方案


您应该配置 DataGridView 以Gallo通过Casados类显示类的属性。

DataGridView绑定只识别属性(不会显示公共字段),例如类Gallo本身无法显示,除非您将所有字段转换为属性。

Option Strict On ' This is "must have"

Public Class Casados
    Private _first As Gallo
    Private _second As Gallo

    Public Sub New(first As Gallo, second As Gallo)
        _first = first
        _second = second
    End Sub

    Public Property TaquillaOfFirst As Integer
        Get
            Return _first.taquilla
        End Get
        Set(value As Integer)
            _first.taquilla = value
        End Set
    End Property

    Public Property TaquillaOfSecond As Integer
        Get
            Return _second.taquilla
        End Get
        Set(value As Integer)
            _second.taquilla = value
        End Set
    End Property
End Class

配置列DataGridView以显示属性 TaquillaOfFirstTaquillaOfSecond

请注意,该行dataCasados.DataSource = ""是多余的,请随意删除它。

不相关但

If diferenciaTotal < 2 AndAlso diferenciaTotal > -2 Then
    Dim casados As New Casados(misGallos(i), misGallos(j))
    misCasados.Add(casados)
End If

当您设置Option StrictOn您将开始受益于编译器帮助,它将识别可能的类型错误。


推荐阅读