2013-09-27 70 views
1

我正在製作一個允許用戶將表添加到列表的程序。 但我無法獲取列表中顯示的列表從ListOf轉移項目時遇到麻煩

該表及其屬性被添加到類中的原始列表中,但是一旦我嘗試顯示它,數據似乎消失了。 我假設我在做我的名單有問題,但我無法弄清楚什麼。 我試圖把列表放在另一個數組列表中,但沒有結果。

Imports Table_Tracker_Library 
Public Class Main_Form 
    Private Property _Table As New Table 
    Private Property _ShowList As Table() 

Private Sub Btn_Add_Table_Click(sender As Object, e As EventArgs) Handles Btn_Add_Table.Click 
    Form_Create_Button.Show() 
End Sub 



Public Sub Renew() 
    _ShowList = _Table.GetList() 
    Me.LB_ActiveTables.ClearSelected() 
    For Each table As Table In _ShowList 
     LB_ActiveTables.Items.Add("Table #" & table.Number) 
    Next 
    LB_ActiveTables.Refresh() 
End Sub 

'Private Function GetList() As Table() 
' Dim TempList As New List(Of Table) 
' For Each table As Table In _Table.ListOfTable 
'  TempList.Add(table) 
' Next 
' Return TempList.ToArray 
'End Function 
End Class 

-

Imports Table_Tracker_Library 
Public Class Form_Create_Button 
    Private Property _Table As New Table 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_addtable.Click 
     _Table.CreateTable(Me.txb_TableNr.Text, Me.txb_PplNr.Text) 
     Main_Form.Renew() 
     Me.Close() 
    End Sub 


    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btn_discard.Click 
     Me.Close() 
     End Sub 
End Class 

-

Public Class Table 
    Public Property Number As Int32 
    Public Property NumberOfPeople As Int32 
    Public Property ListOfTable As New List(Of Table) 



    Public Sub CreateTable(TableNrString As String, PersonNrString As String) 
     Dim TableNR As Int32 = CInt(TableNrString) 
     Dim PersonNr As Int32 = CInt(PersonNrString) 
     Dim NewTable As New Table With {.Number = TableNR, .NumberOfPeople = PersonNr} 
     AddTable(NewTable) 
    End Sub 

    Private Sub AddTable(Table As Table) 
     ListOfTable.Add(Table) 
    End Sub 

    Public Function GetList() As Table() 
     Dim TempList As New List(Of Table) 
     For Each table As Table In ListOfTable 
      TempList.Add(table) 
     Next 
     Return TempList.ToArray 
    End Function 

End Class 
+0

您的意思是'LB_ActiveTables'沒有填充「Table#」&table.Number'值嗎?它應該工作正常。 – varocarbas

+0

是的,這就是我的意思,值不顯示,但是當我調試與步入,它看起來像它永遠不會將項目添加到列表框。 – Vahx

+0

它適用於我(和代碼似乎也很好)。你的意思是「永不增加」,它不會進入循環?如果是這種情況,'_ShowList'不會有任何項目。如果它進入循環,你可以訪問'LB_ActiveTables',應該添加項目沒有任何問題。 – varocarbas

回答

1

改變了privatepublic在初級形式

Public Class Main_Form 
    Public Property Table As New Table 
    Private Property _ShowList As Table() 

..... 

,並用於在次級主窗體的表屬性表格

Public Class Form_Create_Button 


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_addtable.Click 
     If IsNumeric(txb_TableNr.Text) = True AndAlso IsNumeric(txb_PplNr.Text) Then 
      If Main_Form.Table.TableIsAvailable(txb_TableNr.Text, txb_PplNr.Text) = True Then 
       Main_Form.Table.CreateTable(Me.txb_TableNr.Text, Me.txb_PplNr.Text) 
       Main_Form.RenewListBox() 
       Me.Close() 
      Else 
       MessageBox.Show("Table already taken!", "Invalid Table", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1) 
      End If 
     Else 
      MessageBox.Show("Invalid table number or amount of people", "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) 
     End If 
    End Sub 


    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btn_discard.Click 
     Me.Close() 
    End Sub 



End Class