我在完成这项家庭作业时遇到了很多麻烦。如果可以的话请帮忙。
问题如下:
假设文本文件“degrees.txt”包含1981年和2011年在某些研究领域授予的学士学位数。该文件如下所示:
研究领域,1981,2011
商务,200521,311574
电脑和信息。科学,15121,54111
教育,105074,105451
工程,63642,64906
社会科学与历史,100513,156892编写一个程序,为用户提供以下选项。您的代码应该适用于任何文本文件,只要它遵循相同的格式:
字段名称1,1981年度数,2011年度数 字段名称2,1981年度数,2011年度数 ...
文本文件中的字段数未知。
a)在格式化的表格中显示文本文件的内容。“
当我编写程序时,它没有正确对齐。我的代码如下:
Public Class frmDegrees
Dim degrees() As String = IO.File.ReadAllLines("Degrees.txt")
Private Sub btnDegrees_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDegrees.Click
Dim i As Integer
Dim strfmt As String = "{0,-60}{1,10}{2,10}"
Dim fields(3) As String
For i = 0 To degrees.Count - 1
fields = Split(degrees(i), ",")
lstDegrees.Items.Add(String.Format(strfmt, fields(0), fields(1), fields(2)))
Next
End Sub
End Class
请让我知道我做错了什么。
答案 0 :(得分:0)
您可以在表单中添加DataGridView
,然后将表格插入其中。 DataGridView
会有一个名为AutoSizeColumnsMode
的属性,您可以将其设置为AllCells
。而且,如果您想将数字对齐,您可以将列Alignment
的{{1}}属性设置为DefaultCellStyle
。
MiddleRight
答案 1 :(得分:0)
我认为你可能已经完成了格式化任务 - 你的问题在于ListBox - 一个可怕的发明IMO。
亚当的回答可能是最好的,如果您要在网格中查看数据 - 这将是我选择的UI。
以下是一些显示格式化字符串的代码,但它取决于所使用的固定宽度字体。您可以将输出发送到具有多行属性集的TextBox,而不是debug.print。此代码使用List(String)的数据类型,而不是ListBox。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim sData As String = "Field of Study,1981,2011|" ' use | to delimit rows
sData &= " Business,200521,311574|"
sData &= " Computer and Info. Science,15121,54111|"
sData &= " Education,105074,105451|"
sData &= " Engineering,63642,64906|"
sData &= " Social Sciences and History,100513,156892"
Dim strfmt As String = "{0,-60}{1,10}{2,10}"
Dim lstData As New List(Of String)
Dim aData() As String = sData.Split("|") ' build array of rows
Dim aRow() As String
For Each s In aData
aRow = s.Split(",") ' split into fields
'Debug.Print(String.Format(strfmt, aRow)) ' aRow is an array
'Debug.Print(String.Format(strfmt, aRow(0), aRow(1), aRow(2))) ' same as above with individual argments
lstData.Add(String.Format(strfmt, aRow))
Next
Debug.Print(String.Join(vbNewLine, lstData))
Stop
End Sub