您有 2 个选择:
- 使用列表框:
要使用 ListBox,请将字体设置为像 courier new 一样的固定宽度(以便列对齐),然后添加如下项目:
For Each row As DataRow In dt.Rows
lstUsers.Items.Add(RPAD(row("User_Name"),16) & RPAD(row("First_Name"),16) & RPAD(row("Last_Name"),16))
Next
RPAD 函数定义如下:
Function RPAD(a As Object, LENGTH As Object) As String
Dim X As Object
X = Len(a)
If (X >= LENGTH) Then
RPAD = a : Exit Function
End If
RPAD = a & Space(LENGTH - X)
End Function
根据您的情况调整 LENGTH 参数。为至少一个空间再添加一个。此解决方案不太理想,因为您必须对列宽进行硬编码。
- 使用 DataGridView 控件而不是 ListBox。这确实是最好的选择,如果您需要,您甚至可以通过设置选择整行的选项并将 CellBorderStyle 设置为 SingleHorizontal 使其表现得像 ListBox。在设计器中定义列,但无需设置宽度 - 列可以自动调整大小,我在下面的代码中设置了该选项。如果您仍然喜欢设置宽度,请注释掉 AutoSizeColumnsMode 行。
设置网格和添加行的代码如下所示:
g.Rows.Clear() ' some of the below options are also cleared, so we set them again
g.AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.AllCells
g.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal
g.SelectionMode = DataGridViewSelectionMode.FullRowSelect
g.AllowUserToAddRows = False
g.AllowUserToDeleteRows = False
g.AllowUserToOrderColumns = True
For Each row As DataRow In dt.Rows
g.Rows.Add(row("User_Name"), row("First_Name"), row("Last_Name"))
Next