2014-02-23 196 views
2

我正在編寫VB/intro編程課程的任務,我很難過。從列表框選擇填充多個文本框

基本上,我正在編寫的應用程序是一個基於窗體的應用程序,其中列表框中填充了逗號分隔文本文件的結果。我們的目標是能夠對列表框進行排序,優化列表框的視圖/結果,編輯列表框中的項目,查看列表框中選定項目的細節......以及其他任務。在提到的項目中,最後兩個是我卡住的地方:編輯/查看選定的項目。

分配狀態選擇「查看」或「更新」選定的列表框項目需要打開一個新窗體 - 爲要編輯的項目的每個方面填充適當的文本框 - 以便查看/更新。

圖:

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 

原諒我的問題,各位stackoverflowers的newbieness,我試圖在我的感覺有希望填補在一個縫隙教科書。 (很多預先感謝!)

回答

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字段,允許您在用戶單擊保存時將結果寫回記錄。它應該工作。

另一種方法(更多的是在數據綁定中)將直接將文本框的文本屬性綁定到您傳遞的書對象的Title,Author等屬性。

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

這樣,您在文本框中所做的更改將直接轉移到您傳遞的對象。 這一切都取決於最終結果應該是什麼,所以把這些也許作爲提示。