我有一個列表框,其中包含各種數據行(基本上是某人正在購買的項目),當用戶單擊某行時,它會在一側填充一個文本框,其數量是多少他買的東西。例如,一行可能是「鉛筆,$ 5,3」,點擊該行使「3」出現在文本框中。編輯列表框的內容
如果用戶改變了3到7,例如,我想,要放回行,所以我們現在有「鉛筆,$ 5,7」
我該怎麼辦呢?
我有一個列表框,其中包含各種數據行(基本上是某人正在購買的項目),當用戶單擊某行時,它會在一側填充一個文本框,其數量是多少他買的東西。例如,一行可能是「鉛筆,$ 5,3」,點擊該行使「3」出現在文本框中。編輯列表框的內容
如果用戶改變了3到7,例如,我想,要放回行,所以我們現在有「鉛筆,$ 5,7」
我該怎麼辦呢?
您需要編程列表框的SelectedIndexChanged
事件和文本框的TextChanged
事件。以下是您的代碼片段:
Private Sub ListBox1_SelectedIndexChanged(_
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles ListBox1.SelectedIndexChanged
// Exit if no item is selected
If ListBox1.SelectedItem Is Nothing Then Exit Sub
// Get the item's text
Dim item As String = ListBox1.SelectedItem.ToString
// Keep only the last part
item = item.Substring(item.LastIndexOf(", ") + 2)
// Update the textbox
TextBox1.Text = item
End Sub
Private Sub TextBox1_TextChanged(_
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles TextBox1.TextChanged
// Exit if no item is selected
If ListBox1.SelectedItem Is Nothing Then Exit Sub
// Get the item's text, removing the last part
Dim item As String = ListBox1.SelectedItem.ToString
item = item.Substring(0, item.LastIndexOf(", ") + 2)
// Add the numerical value of the textbox's text
item &= Val(TextBox1.Text)
// Get the index of the selected item
Dim index As Integer = ListBox1.SelectedIndex
// Remove the old item, add the new one and select it
ListBox1.Items.RemoveAt(index)
ListBox1.Items.Insert(index, item)
ListBox1.SelectedIndex = index
End Sub
您不需要刪除該項目並重新插入它。你可以修改它並刷新列表框。這也會做同樣的事情。 – 2010-08-02 13:42:02
這篇文章不是VBA代碼。 VBA中不存在SelectedIndexChanged而不是TextChanged事件。發佈前請仔細閱讀問題。 – 2010-08-02 19:22:39
@ David-W-Fenton:當我回答時,有一個VB.NET標籤。不要急於判斷別人的答案。 – Anax 2010-08-02 19:29:15
這看起來非常像綁定到購買表的子表單將是最簡單的解決方案。 – Fionnuala 2010-08-02 19:48:23