ListView a Checkbox   zodpovězená otázka

VB.NET, Algoritmy, WinForms

Zdravím, potýkám se s násl. problémem:

v listview mám položky a povolené checkboxy, potřeboval bych v případě zaškrtnutí checkboxu projít všechny zaškrtnuté položky listview a zrušit zaškrtnutí, tzn. měla by být vždy zaškrtnuta jen jedna položka.

snažím se o to násl.:

    Private Sub ListView1_ItemChecked(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckedEventArgs) Handles ListView1.ItemChecked
        For Each i In Me.ListView1.CheckedItems
            i.checked = False
        Next
    End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se, ještě jsem zapoměl, co to nedělá :-)

pokud se pokusí uživatel o zaškrtnutí, tak se položka nezaškrtne, potřeboval bych výše uvedený kód provést těsně před zaškrtnutím položky a ne po zaškrtnutí.

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Private isHandlerEnabled As Boolean = True
Private lastChecked As Integer = -1
Private Sub ListView1_ItemChecked(ByVal sender As Object, ByVal e As ItemCheckedEventArgs) Handles ListView1.ItemChecked
  If isHandlerEnabled Then
    If lastChecked > -1 Then
      isHandlerEnabled = False
      ListView1.Items(lastChecked).Checked = False
      isHandlerEnabled = True
    End If
    lastChecked = e.Item.Index
  End If
End Sub

Problém byl v tom, že událost nastávala při KAŽDÉ změně zaškrtnutí, tudíž i programové (nastavení vlastnosti Checked). Výše uvedený kód dočasně vyřazuje handler v případě nastavování vlastnosti Checked.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Funguje to, děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback