0

リストボックスを含むこのフォームがあります

    Public Class Item
    Private sList As List(Of Container)

    Sub New(ByRef sList As List(Of Container))
        InitializeComponent()

        Me.sList = sList
    End Sub

    Private Sub Item_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        For Each c As Container In sList
            ListBox1.Items.Add(c)
        Next


        ListBox1.DataSource = sList
        ListBox1.DisplayMember = "sItem"
    End Sub
End Class

これはクラスコンテナになります

Public Class Container

    Private _sItemName As String
    Private _sPrice As Single
    Private _iNumber As Integer
    Private _sItemString As String

    Sub New(ByVal _sItemName As String, ByVal _sPrice As Single, ByVal _iNumber As Integer, ByVal _sItemString As String)
        Me._sItem = _sItemName
        Me._sPrice = _sPrice
        Me._iNumber = _iNumber
        Me._sItemString = _sItemString
    End Sub

    Public Property sItemName() As String
        Get
            Return _sItemName
        End Get
        Private Set(value As String)
            _sItemName = value
        End Set
    End Property

    Public Property sItemString() As String
        Get
            Return _sItemString
        End Get
        Private Set(value As String)
            _sItemString = value
        End Set
    End Property

    Public Property sPrice() As Single
        Get
            Return _sPrice
        End Get
        Private Set(value As Single)
            _sPrice = value
        End Set
    End Property

    Public Property iNumber() As String
        Get
            Return _iNumber
        End Get
        Private Set(value As String)
            _iNumber = value
        End Set
    End Property

End Class

そして、それを出力に追加する場所があります

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim dgv As DataGridView = DataGridView1
    Dim rowIndex As Integer = dgv.SelectedRows(0).Index

    Dim _sItem As String = ""
    Dim _iNumber As Integer = TextBox1.Text
    Dim _sPrice As Single = dgv.Rows(rowIndex).Cells("Prix").Value * TextBox1.Text

    Dim format As String = "{0, -10} {1, -10} {2, 5}"

    _sItem = String.Format(format, dgv.Rows(rowIndex).Cells("Nom").Value.ToString, _sPrice.ToString("C2"), _iNumber.ToString)

    Console.WriteLine(_sItem)
    Dim container As New Container(_sItem, _sPrice, _iNumber, dgv.CurrentRow.Cells("Nom").Value.ToString)

    If (updateDGV(container) = True) Then
        sList.Add(container)
    End If

    TextBox1.Clear()
    TextBox1.Focus()
    updateLabel()
End Sub

私の質問は、lsitbox の出力がこのようになっている理由です。 ここに画像の説明を入力

そして、コンソール出力は

ここに画像の説明を入力

私が望むのは、リストボックスの出力がコンソールと同じであることですが、形式が機能していないようで、そこから、これを機能させる方法がわかりません。リストボックスにテキストが表示されない理由について、ヘルプと説明を使用できますちゃんと

私が明確であることを確認するために:リストボックスの出力をコンソール出力と同じに見せる方法はありますか

編集:リストビュー

ご覧のとおり、データはバインドされているので、そうすると

リストボックスからのコンテナアクセス

        Dim obj As Object = ListBox1.SelectedItem

    If (TypeOf obj Is Container) Then
        Dim c As Container = CType(obj, Container)

        Console.WriteLine(c.iNumber)
    End If

1行を選択するとオブジェクトを返すことができます。これは、リストビューと追加の方法がわからないことです( for eachItems.add(c)は、リストビューに相当するものを知りません)

4

2 に答える 2

2

コンソールに等幅フォントがあります。しかし、ウィジェットにはありません。

于 2013-09-30T11:29:17.783 に答える
1

コメントで提案されているように、次の複数列のサンプル コードがありListViewます。

With ListView1
    .View = View.Details
    .Columns.Add("")
    .Columns.Add("")
    .Columns.Add("")
End With

Dim inputs As List(Of Container) = New List(Of Container)
'populate "inputs"...
For Each item As Container In inputs
    Dim curEntry As New ListViewItem(New String() {item.sItem.ToString(), item.sPrice.ToString(), item.iNumber.ToString()})
    ListView1.Items.Add(curEntry)
Next

を使用して、各列を個別に処理できます (配置、幅など) ListView1.Column(index)

于 2013-09-30T11:48:05.887 に答える