2016-11-21 79 views
0

即時通訊使用listview在vb.net新的,但我設法顯示來自mysql數據庫的數據,但不知何故,我沒有一個錯誤,但somethings奇怪的事情發生在我的列表視圖。在表單加載中顯示數據從數據庫的列表視圖

這是列表視圖的第一個形象, enter image description here

但之後我點擊退出按鈕,然後再次打開它。發生這種情況 enter image description here

在列表視圖雙打每次我退出並重新打開它的列,但如果我關閉整個應用程序並重新運行它,它恢復正常,我點擊每一次再翻一番退出並再次打開庫存。

這是表單加載的代碼。

Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Timer1.Enabled = True 
    Call LVWloader() 
    Call Locker(True) 
    Call objLocker(False) 


    With ListView1.Columns 
     .Add("Semen ID", 50, HorizontalAlignment.Center) 
     .Add("Bullname", 150, HorizontalAlignment.Center) 
     .Add("Breed", 150, HorizontalAlignment.Center) 
     .Add("Quantity", 50, HorizontalAlignment.Center) 
     .Add("Location", 50, HorizontalAlignment.Center) 
     .Add("Date Purchased", 50, HorizontalAlignment.Center) 

    End With 
    For i As Integer = 0 To ListView1.Columns.Count - 1 
     ListView1.Columns(i).Width = -2 
    Next i 
End Sub 

,這是裝載代碼

Public Sub LVWloader() 
    Dim myCommand As New MySqlCommand 
    Dim myReader As MySqlDataReader 
    Dim conn As MySqlConnection 
    conn = New MySqlConnection 
    conn.ConnectionString = "server = localhost;username= root;password= a;database= semenis" 
    Try 
     conn.Open() 
    Catch mali As MySqlException 
     MsgBox("connot establish connection") 
    End Try 

    ListView1.Items.Clear() 
    With myCommand 
     .Connection = conn 
     .CommandText = "Select * from inventory" 
    End With 
    myReader = myCommand.ExecuteReader 
    While myReader.Read() 
     With ListView1 
      .Items.Add(myReader(0)) 
      With .Items(.Items.Count - 1).SubItems 
       .Add(myReader.Item(1)) 
       .Add(myReader.Item(2)) 
       .Add(myReader.Item(3)) 
       .Add(myReader.Item(4)) 
       .Add(myReader.Item(5)) 

      End With 
     End With 
    End While 
End Sub 

我覺得代碼錯誤來自對。新增列表視圖,也許那裏有做這另一種方式?

IM使用vb.net和MySQL數據庫

感謝,

+0

爲什麼要使用'ListView'呢?爲什麼不填充一個'DataTable'並將其簡單地綁定到'DataGridView'? – jmcilhinney

+0

我在其他表上使用datagridview,但在這一個我想我想更多地探討如何正確使用listview, – User2341

+0

至於爲什麼發生這種情況,我猜這是因爲你顯示的是同一個實例多次,每次執行'Load'事件處理程序。如果你要在'Load'上構造'ListView',那麼確保在關閉它之後處理這個實例,然後在每次你想顯示它時創建一個新的實例。如果您發佈打開此表單的代碼,它可能會幫助我們。 – jmcilhinney

回答

2

之所以它的複製是因爲你使用的是窗體的Load事件中加入欄,這是每一個形式是時候叫加載。您需要在表單設計器或表單的構造函數中添加列。

+0

或確保'Load'事件處理程序不會執行多次。也就是說,我看不出有什麼理由不在設計師中添加列。 – jmcilhinney

+0

謝謝先生,我做了兩個替代答案,1.是通過@jmcilhinney'使用語句'和2。我是否在表單設計器中添加了列。 :) – User2341

相關問題