【发布时间】:2012-11-26 17:54:15
【问题描述】:
VB.Net: 我正在使用两种形式 - frmDetails、frmInventory frmInventory 包含一个列表框,它读取一个文本文件,其中包含书名、作者、类别、库存编号和每件商品价格(五个元素)的列表。列表框只显示书名。
frmDetails 包含与文本文件中的元素匹配的单个文本框。
如果用户在 frmInventory 列表框中选择一项(标题)并从下拉菜单中选择更新,则 frmDetails 中的文本框需要填充与其标签匹配的元素(标题与标题,作者与作者等)。也就是说,选中后,需要读取文本文件,解析数据,填充到每个文本框中。
我尝试了几种不同形式的代码:
Dim selectedUpdate As String = lstBookList.SelectedItem.ToString
If selectedUpdate = lstBookList.SelectedItem.ToString Then
Dim queryUpdate = From item In File.ReadAllLines("Books.txt")
Let ti = item.Split(","c)(0)
Let au = item.Split(","c)(1)
Let ca = item.Split(","c)(2)
Let qt = item.Split(","c)(3)
Let co = item.Split(","c)(4)
Where ti = selectedUpdate
Select ti & "," & au & "," & ca & "," & qt & "," & co
For Each ti In queryUpdate
frmDetails.txtTitle.Text = ti
For Each au In queryUpdate
frmDetails.txtAuthor.Text = au
For Each qt In queryUpdate
frmDetails.txtStock.Text = qt
For Each co In queryUpdate
frmDetails.txtPrice.Text = co
Next
Next
Next
Next
End If
frmDetails.ShowDialog()
End Sub
或者:
Dim selectedUpdate As String = lstBookList.SelectedItem.ToString
Dim itemToUpdate() As String = File.ReadAllLines("Books.txt")
If selectedUpdate = lstBookList.SelectedItem.ToString Then
Dim queryTitle = From bookTitle In itemToUpdate
Let ti = bookTitle.Split(","c)(0)
Where ti = selectedUpdate
Select ti
For Each ti In queryTitle
frmDetails.txtTitle.Text = ti
Next
Dim queryAuthor = From bookAuthor In itemToUpdate
Let au = bookAuthor.Split(","c)(1)
Where au = selectedUpdate
Select au
For Each au In queryAuthor
frmDetails.txtAuthor.Text = au
Next
或者:
Dim selectedUpdate As String = lstBookList.SelectedItem.ToString
Dim itemToUpdate() As String = File.ReadAllLines("Books.txt")
If selectedUpdate = lstBookList.SelectedItem.ToString Then
Dim queryUpdate = From item In File.ReadAllLines("Books.txt")
Let ti = item.Split(","c)(0)
Let au = item.Split(","c)(1)
Let ca = item.Split(","c)(2)
Let qt = item.Split(","c)(3)
Let co = item.Split(","c)(4)
Where ti = selectedUpdate
Select ti, au, ca, qt, co
frmDetails.txtTitle.Text = (queryUpdate.ToString) ti
frmDetails.txtAuthor.Text = au
frmDetails.txtStock.Text = qt
问题在于解析记录中的数据,以便将其分散到不同的文本字段中。
任何帮助将不胜感激。
【问题讨论】:
-
我不是 100% 清楚你要做什么。更糟糕的是,您的代码遵循非常糟糕的编码标准。当我看到这样写的 4 个嵌套循环时,我的眼睛很疼。
Let xx = item.Split(","c)(0)也不好。无意冒犯,但我建议先阅读一本关于 VB.NET 的书,然后再开始编码。否则你会一直在每一个小问题上磕磕绊绊。 -
我不知道这是否是一些标准的家庭作业,但它类似于我最近看到的一些问题。无论如何,看看我的回答:stackoverflow.com/questions/12574143/… 它涉及创建一个 Book 类,将所有书籍读入一个列表(书籍),这样您就可以使用 linq 轻松查询它。如果书籍列表太大而无法保存在内存中,我建议使用数据库。 sqlite 将是一个简单的选择
-
使用这种方法,您可以将单个书籍对象传递给新表单,并简单地设置文本框,例如 txtAuthor.Text = book.author、txtTitle.Text = book.title 等
-
为清楚起见,我需要将文本文件中的元素以单独的形式传递到各个文本框。所选择的只是标题。我的代码可能看起来很简单,因为它是。我正在上大学课程,并且仍在学习。我插入的代码是我尝试过的,因为这是我目前所知道的。这是上面提到的 user574632 的确切项目,但它不包括我的具体问题。我需要帮助的是更新部分 - “添加和编辑过程使用第二种形式,frmDetails。”
-
已添加对我的链接答案的修改,特定于更新
标签: vb.net vb.net-2010