2013-08-26 38 views
0

我有一個刪除按鈕在用戶窗體中,從列表視圖中刪除選定的項目。問題是,如果沒有選擇一個項目(至少它沒有被選中),它會刪除第一個項目。我怎樣才能知道是否沒有選擇的項目,所以我可以避免去除任何東西?如何知道在列表視圖中是否沒有選中的項目?

這是我試過的,當沒有任何選擇的時候,它仍然刪除第一個項目。

Private Sub CommandButtonDelete_Click() 
    If Not (ListView1.SelectedItem Is Nothing) Then 
     ListView1.ListItems.Remove ListView1.SelectedItem.Index 
    End If 
End Sub 

編輯:

的問題似乎是,總是有選擇的項目。所以,新的問題,當用戶在listView外單擊時,如何取消選擇該項目?

+0

嘗試「ListView1.SelectedItem = -1」,而不是「ListView1.SelectedItem =沒有'。我沒有把這作爲解決方案,因爲我不確定它是正確的!但是,它應該很快嘗試。 – jerussell

+0

@jerussell不,問題似乎是總是選擇一個項目。 –

回答

0

您可以按照與確定是否沒有選定內容相同的方式取消選擇項目。

例如:

Me.ListBox1.ListIndex = -1 

將取消選擇了在ListBox1中選擇任何內容。請注意,這是ListBoxes,我沒有與ListViews一起工作,但我想象同樣適用。當然你需要把它放在某個地方。最簡單的地方是把它放在Private Sub UserForm_Click()但我不會建議,因爲任何時候有人在選擇後點擊用戶表單,它會清除選擇。最好放置它的地方是Private Sub ListBox1_Click(),然後確定是否已經選擇了被點擊的那個。在這種情況下你編寫代碼來取消它......

證實了這一點可與列表框(有沒有與列表視圖):

Private Sub CommandButton1_Click() 
    If Not (Me.ListBox1.ListIndex = -1) Then 
     Me.ListBox1.RemoveItem (Me.ListBox1.ListIndex) 
    End If 
End Sub 

'Will unselect any selection when user clicks anywhere on the userform (but not on a control ON the userform) 
Private Sub UserForm_Click() 
    Me.ListBox1.ListIndex = -1 
End Sub 

Private Sub UserForm_Initialize() 
    Me.ListBox1.AddItem "asdf" 
    Me.ListBox1.AddItem "basdf" 
End Sub 
+0

這效果更好,但仍不是預期的行爲。如果選擇一個項目,然後點擊表格另一部分的文本框,該項目將不再突出顯示,但是當您單擊刪除時,它將刪除該項目,因爲它仍然處於選中狀態(即使未選中) 。我可以爲表單的每個文本框,標籤等編寫這行代碼,但這看起來不是最好的選擇。 –

+0

您是否正在使用您在原問題中發佈的原始IF THEN陳述或稍後建議的陳述?我可以用ListBox來測試它,並且它可以很好地處理這段代碼(編輯不佳),我也將它放在我的答案中):Private Sub CommandButton1_Click() If Not(Me.ListBox1.ListIndex = -1)Then Me.ListBox1.RemoveItem(Me.ListBox1.ListIndex) 結束如果結束 子 私人小組UserForm_Click() Me.ListBox1.ListIndex = -1 結束子 私人小組UserForm_Initialize() Me.ListBox1.AddItem 「asdf」 Me.ListBox1.AddItem「basdf」 End Sub# – jerussell

+0

是的,這是有效的,問題是當用戶點擊一個控件時,該項目仍然被選中,但高光消失,因此用戶可以'告訴哪個項目將被刪除,當他點擊刪除。 –

相關問題