2015-12-10 49 views
2

我想要切換全選/全部取消選擇複選框。例如:如何在Listview項目單擊時切換全選/取消全選複選框?

如果列表視圖的總選擇的項目是等於在列表視圖的總項然後全部選擇/取消選擇所有複選框將被檢查,並且如果沒有,那麼取消選中選擇所有/取消選擇所有複選框

Dim c,listcount As Integer 
listcount = ListView1.ListItems.Count 

If c = listcount Then 
    CheckBox1.Value = True 
Else 
    CheckBox1.Value = False 
End If 

我的選擇代碼,並取消所有被罰款,當您選中或取消選中全部選擇/取消選擇所有複選框,在列表視圖中的所有項目也將選中或取消選中。上面的代碼將切換選擇全部/全部取消選中所有複選框當總選定的項目等於列表視圖中的總項目,並通過檢查或點擊列表視圖中的項目觸發,但問題是它也會觸發我的代碼爲選擇全部/取消全選複選框這將導致取消選中列表視圖中的所有列表項。

有人可以幫助我嗎?

這是我代碼全部選擇/取消選擇所有複選框

Private Sub CheckBox1_Click() 
     'check if this is already check or not 
     If CheckBox1.Value = True Then 
      seldesel (True) 
     Else 
      seldesel (False) 
     End If 
    End Sub 

Function seldesel(a As Boolean) 
    listcount = ListView1.ListItems.Count 
    For X = 1 To listcount 
     ListView1.ListItems(X).Checked = a 
    Next X 
End Function 
+1

我的這篇文章可能是有趣的:http://yoursumbuddy.com/userform-event-handler-class-multiple-controls/ –

+0

我不知道你的文章在我的問題中的相關性是什麼。 – codiplex

+1

這是一種管理用戶窗體中主/從複選框關係的方法。這聽起來就是你正在做的。如果是這樣,不管它是Word還是Excel。這是否使它更加相關。 (請記住,我只是想幫助您。) –

回答

2

要防止出現您CheckBox1_Click子程序,你可以觸發從單擊更改CheckBox1_MouseDown。這樣,只有當用戶手冊用鼠標檢查它時,它纔會運行它的代碼。

此外,在MouseDown中,代碼在實際檢查框之前運行。要修復您的代碼更改這一行:

If CheckBox1.Value = True Then 

只要這個

If CheckBox1.Value = False Then 

希望這有助於。

+0

該複選框已在Checkbox1_Click事件中。 – codiplex

+0

嗨codiplex,我更新了我的答案以解決問題。 –

+0

它的工作原理,我改變了的事件全選/全選取消選中所有複選框鼠標按下但問題是當我點擊選擇全部/取消全選複選框,它只會檢查第二個列表中的所有項目點擊現在它是不選中的,listview中的項目全部檢查,如果再次點擊,它將檢查並且listview中的項目將被取消選中。 – codiplex

相關問題