我有这个包含列表框的表单
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上的输出是这样的
控制台输出
我想要的是列表框输出与控制台相同但格式似乎不起作用我不知道我应该如何使这项工作我可以使用一些帮助和解释为什么列表框不是正确显示文字
确定我很清楚:有没有办法让列表框输出看起来与控制台输出相同
编辑:ListView
如果我这样做,你可以看到数据是绑定的
从列表框访问容器
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
当我选择一行时,它可以返回我的对象,这就是我不知道如何处理列表视图和添加(对于每个Items.add(c)
我不知道等效于一个列表视图)
答案 0 :(得分:2)
控制台中有monospaced font。但不是小部件中的一个。
答案 1 :(得分: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)
独立处理每个列(对齐,宽度等)。