从列表框选择中填充多个文本框

时间:2014-02-23 06:05:07

标签: vb.net winforms visual-studio windows-forms-designer

我正在为编程课程编写VB /简介,我很难过。

基本上,我正在编写的应用程序是基于表单的应用程序,其中列表框中填充了逗号分隔文本文件的结果。目标是能够对列表框进行排序,优化列表框的视图/结果,编辑列表框中的项目,查看列表框中所选项目的详细信息......以及其他任务。在提到的项目中,最后两个是我被困住的地方:编辑/查看所选项目。

分配指出选择“查看”或“更新”所选列表框项要求打开一个新表单 - 填充了要编辑的项目的每个方面的相应文本框 - 查看/更新。

图表:

enter image description here

这就是我难倒的地方:将所有五个字段的数据放入每个相应的文本框基于选定的列表框项 ...然后能够保存对该字段的更改.txt数据源中的一行。

以下是我目前在form_load上填充列表框的方法:

Private Sub frmInventory_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim books() = IO.File.ReadAllLines("Books.txt")
        Dim n As Integer = books.Count - 1
        ReDim book(n)
        Dim data() As String
        For i As Integer = 0 To n
            data = books(i).Split(","c)
            book(i).title = data(0)
            book(i).author = data(1)
            book(i).category = data(2)
            book(i).price = data(3)
            book(i).stock = data(4)
        Next
        Dim booksAllQuery = From col In book
                         Where col.category = "F" Or col.category = "N"
                         Select col.title
        lstBooks.DataSource = booksAllQuery.ToList
    End Sub

请原谅我的问题的新手,伙伴堆叠花,因为我试图希望填写我认为教科书中的差距。 (并提前多多感谢!)

1 个答案:

答案 0 :(得分:0)

好像你拥有数据库(或书籍对象数组)中书籍的所有数据。要编辑图书,您可以例如重载编辑器表单的.ShowDialog方法。

Public Class frmEditor
    Private WorkingRecord As Book
    Public Overloads Function ShowDialog(owner As IWin32Window, ByRef record As Book) As DialogResult
        WorkingRecord = record
        tbTitle.Text = record.Title
        tbAuthor.Text = record.Author
        ...
        Return MyBase.ShowDialog(owner)
    End Function
End Class

然后,您可以使用要编辑的记录调用此函数,并填充记录中的值。 我添加了WorkingRecord字段,允许您在用户单击“保存”时将结果写回记录。它应该工作。

另一种方法(在数据绑定的上下文中更多)是将文本框的文本属性直接绑定到您传递的书籍对象的标题,作者等属性。

tbTitle.DataBindings.Clear()    
tbTitle.DataBindings.Add(New Binding("Text", record, "Title"))

这样,您在文本框中所做的更改将直接传输到您传递的对象。 这一切都取决于最终结果应该是什么,所以把它们作为提示。