2010-08-02 83 views
1

我有一個列表框,其中包含各種數據行(基本上是某人正在購買的項目),當用戶單擊某行時,它會在一側填充一個文本框,其數量是多少他買的東西。例如,一行可能是「鉛筆,$ 5,3」,點擊該行使「3」出現在文本框中。編輯列表框的內容

如果用戶改變了3到7,例如,我想,要放回行,所以我們現在有「鉛筆,$ 5,7」

我該怎麼辦呢?

+1

這看起來非常像綁定到購買表的子表單將是最簡單的解決方案。 – Fionnuala 2010-08-02 19:48:23

回答

0

您需要編程列表框的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 
+1

您不需要刪除該項目並重新插入它。你可以修改它並刷新列表框。這也會做同樣的事情。 – 2010-08-02 13:42:02

+0

這篇文章不是VBA代碼。 VBA中不存在SelectedIndexChanged而不是TextChanged事件。發佈前請仔細閱讀問題。 – 2010-08-02 19:22:39

+0

@ David-W-Fenton:當我回答時,有一個VB.NET標籤。不要急於判斷別人的答案。 – Anax 2010-08-02 19:29:15