1

リストビューには、チェックボックスであるいくつかのアイテムがあります。

リストビューの「ItemChecked」イベントでこのコードを使用できました。

For Each item In lwSources.Items
    If Not item.Index = e.Item.Index Then item.Checked = False
Next

問題は、正しく反応しないことです。たとえば、何も選択されていない場合、1 回クリックすると項目が正しく選択されます。別の項目 (チェックされていないもの) をクリックしようとすると、最初にチェックした項目のチェックが外れ、もう一度クリックして現在必要な項目をチェックする必要があります。

必要以上に 1 回クリックする必要があります...

4

3 に答える 3

2

1時間の試行錯誤の後、私はついにそれをやった.

まず、グローバル変数を次のように設定します..

Dim a As Integer = 0

通常のクリック イベント内で 0 に設定すると、最初に発生します。

    Private Sub ListView1_Click(sender As System.Object, e As System.EventArgs) Handles   ListView1.Click
     a = 0
    End Sub

チェックされたリストビュー項目で、a = 0 であることを確認します。

Private Sub ListView1_ItemChecked(sender As System.Object, e As System.Windows.Forms.ItemCheckedEventArgs) Handles ListView1.ItemChecked

    If a = 0 Then
        For Each item In lwSources.Items
            a = 1
            If Not item.Index = e.Item.Index Then
                item.Checked = False
            End If
        Next
    End If
End Sub

問題は、チェック済みの値を変更すると、イベントが再び発生することですが、送信者がいないため、すべてがチェックされていない状態になると思います。

于 2012-12-21T15:09:33.547 に答える
0

この条件でこの条件を設定して試してみてください....

For Each item In lwSources.Items
      If  item.Index = e.Item.Index Then
       item.Checked = true
      End If
 Next
于 2012-12-21T14:25:53.257 に答える
0

あなたのコードは素晴らしく、このように ItemChecked イベントではなく ItemCheck イベントにコードを配置すると、うまく機能します

Private Sub IMFavIconList_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles IMFavIconList.ItemCheck For Each item In sender.Items If Not item.Index = e.Index Then item.Checked = False Next End Sub

それは私にとってとてもうまくいきます!

于 2015-01-01T09:47:50.560 に答える