NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: c# datagridview checkbox ctrl + select

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Ladislav Niderle:1.11.2017 6:59

Ahoj, potřeboval bych poradit jak se dělá to, že v gridu mám jeden sloupec checkbox, který momentálně umím označit jak samostatně, tak přes tlačítko vše, ale jak se řeší událost, když držím klávesu CTRL a levým tlačítkem myši klikám na jednotlivé řádky, tak aby se mi ty checkboxy označovali nebo odoznačovali.

Předem moc děkuji za radu

 
Odpovědět
1.11.2017 6:59
Avatar
Miroslav Holubek:1.11.2017 7:54

Ahoj,
odpovedám v tomto novom vlákne,

je to jednoduché, najskôr musíš mať nastavené na gride, SelectionMode = CellSelect a MultiSelect = True, to kľudne nastav vo vlastnostiach a pri kontrole čo je označené použi cyklus

neviem aký používaš jazyk, toto je vo VB.Net ale do C# to bude jednoduché preložiť

For i = 0 To g1.RowCount - 1
    For j = 0 To g1.ColumnCount - 1
        If g1.Rows(i).Cells(j).Selected = True Then
            txtTest1.Text &= g1.Rows(i).Cells(j).Value
        End If
    Next
Next
 
Nahoru Odpovědět
1.11.2017 7:54
Avatar
Odpovídá na Miroslav Holubek
Ladislav Niderle:1.11.2017 8:29

Ahoj, já to právě potřebuji tak, že kliknu kdekoliv na řádku a při označení pomocí klávesy CTRL, tak se na nějakou událost ten konkrétní řádek v checkboxu znační či zruší. Jinak to řeším spíše taky ve VB. NET, ale raději jsem to napsal do c#, kde snad budou lidi, kteří mi budou schopni poradit :).

 
Nahoru Odpovědět
1.11.2017 8:29
Avatar
Miroslav Holubek:1.11.2017 8:51

Prepáč nejako nerozumiem otázke :-)

toto je kód na označenie/odzna­čenie keď klikneš kdekoľvek na riadok

Private Sub g1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles g1.CellClick
    If g1.Rows(e.RowIndex).Cells(index stlpca).Value = True Then
        g1.Rows(e.RowIndex).Cells(index stlpca).Value = False
    Else
        g1.Rows(e.RowIndex).Cells(index stlpca).Value = True
    End If
End Sub
 
Nahoru Odpovědět
1.11.2017 8:51
Avatar
Odpovídá na Miroslav Holubek
Ladislav Niderle:1.11.2017 9:04

No něco takového potřebuji, ale trochu více potřebuji, abych to označil či odznačil pokud držím klávesu CTRL a klikám na řádky. To co píšeš mi to označí i bez držení klávesy CTRL ne? Já to potřebuji právě nastvait na to, že držím klávesu CTRL.

 
Nahoru Odpovědět
1.11.2017 9:04
Avatar
Miroslav Holubek:1.11.2017 9:18

tak to bude trocha zložitejšie,
najskôr povoľ na okne vlastnosť KeyPreview = true

potom v kóde

Dim stlacene_CTRL As Boolean = False   'pomocna premenna ktora nam povie ci je stlacene ctrl
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    If e.Modifiers = Keys.Control Then              'ctrl je stlacene
        stlacene_CTRL = True
    End If
End Sub

Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
    stlacene_CTRL = False                   'ctrl bolo uvolnene
End Sub

Private Sub g1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles g1.CellClick
    If stlacene_CTRL = False Then Exit Sub  'ak nieje stlacene tak to nerob
    If g1.Rows(e.RowIndex).Cells(10).Value = True Then
        g1.Rows(e.RowIndex).Cells(10).Value = False
    Else
        g1.Rows(e.RowIndex).Cells(10).Value = True
    End If
End Sub
Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět
1.11.2017 9:18
Avatar
Odpovídá na Miroslav Holubek
Ladislav Niderle:1.11.2017 10:16

To je přesně ono. Moc děkuji

 
Nahoru Odpovědět
1.11.2017 10:16
Avatar
Miroslav Holubek:1.11.2017 10:22

Aj nabudúce :-)

keby som si poriadne prečítal prvú otázku tak by to bolo rýchlejšie :-)

 
Nahoru Odpovědět
1.11.2017 10:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.