2016-01-07 69 views
1

請幫幫我。我試圖做的是將選定的項目從列表框中轉移到標籤。但每次我從列表框中單擊一個項目,它都不起作用。 這是代碼。將數據從ListBox鏈接到VB.Net中的標籤

Private Sub lbClients_SelectedIndexChanged(sender As Object, e As EventArgs)  
      Handles lbClients.SelectedIndexChanged 

     For i = 0 To lbClients.SelectedItems.Count -1 
      Label1.Text &= lbClients.SelectedItems.Item(i).ToString() & " " 
     Next 


End Sub 

我已經包括了錯誤的照片。

This is what it looks like. The one with the Client name label.

請幫助我。我知道這並不難。但我一直在尋找答案,它仍然是這樣。我只是vb.net的新手,很抱歉。謝謝你。

這裏是我用來填充列表框中的代碼。

Private Sub ListBoxClients() 
    Dim connection As New SqlConnection("Data Source=EURIZZE-PC;Initial Catalog=INTERTRANS;Integrated Security=True") 
    Dim SQLDA As New SqlDataAdapter("Select * FROM CLIENTS", connection) 
    Dim dt As New DataTable 


    connection.Open() 
    SQLDA.Fill(dt) 
    lbClients.DataSource = dt 
    lbClients.ValueMember = "User_" 
    lbClients.DisplayMember = "Clientname" 
    connection.Close() 
End Sub 
+0

你的'ListBox'包含'DataRowView'類型的項目。你可以顯示一個代碼如何填充ListBox嗎? 'lbClients.SelectedItems.Item(I)的ToString()'將執行'DataRowView.ToString()' – Fabio

+0

@Fabio我已經編輯我的職務,並把代碼爲你的要求是什麼:( –

+0

您可以使用['GetItemText'] (https://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.getitemtext(v=vs.110).aspx)方法來獲取指定項目的文本表示。不需要知道列表框中的數據源或顯示成員的任何信息,並且列表框可以回答您的請求。 –

回答

0

ListBox.SelectedItems返回當前選定項目的集合。

遍歷列表框的SelectedItems集合。

例如代碼:

Dim text As String = "" 

For Each item As System.Data.DataRowView In lbClients.SelectedItems 
    text &= item.Row.Field(Of String)(0) & ", " 
Next 
Label1.Text = text 
0

顯然你的列表框爲界,DataTable,並使用DisplayMember顯示項目。
在這種情況下,產品DataRowView類型的 - 這就是爲什麼你在標籤獲得類型名,你需要指定你將作爲文本使用的標籤所選項目的列。
DataRowView的具有財產.Row其返回底層DataRow對象。
使用的lbClients.DisplayMember值必須顯示在列表框中

Dim text As New StringBuilder() 
For Each item As DataRowView in lbClients.SelectedItems 
    text.Append(item.Row.Field(Of String)(lbClients.DisplayMember)) 
    text.Append(" ") 
End For 
Label1.Text = text.ToString() 

創建循環中的字符串會比較有效與StringBuilder文字相同的項目。

+0

嗨。感謝您的回答。但是我收到了一個錯誤消息:它提示:「其他信息:無法投射對象類型「System.Int32爲鍵入「System.String」。」這是什麼意思?:( –

+0

它的意思是你想投含有類型列'Integer'檢查的價值'DisplayMember'它必須包含列名'Clientname'。或者使用'item.Row(lbClients.DisplayMember).ToString()' - 然後你會看到是rig用作文本的ht列 – Fabio