Pohyb po DataGridView   otázka

VB.NET, Komponenty, Algoritmy

Dobrý deň,

kto mi poradí ako zmením chovanie DGV po stlačení "ENTER"

ktorý presunie kurzor na následujúci riadok ja potrebujem

na ďaľši stĺpec

Mám nastavenie:

        TovarDGV.EditMode = DataGridViewEditMode.EditOnKeystroke
        TovarDGV.CurrentCell = TovarDGV.Item(2, 0)
        TovarDGV.Focus()

    Private Sub TovarDGV_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TovarDGV.CellEndEdit
        Dim ir, ic As Integer
        ir = e.RowIndex
        If e.ColumnIndex = 2 Then
            ic = 3
        Else
            ic = 2
            ir += 1
            If ir >= nr Then
                TovarDGV.Visible = False
                Exit Sub
            End If
        End If
        TovarDGV.CurrentCell = TovarDGV.Item(ic, ir)
        TovarDGV.Focus()
    End Sub

ďakujem

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

Opravené.Toto by mohlo fungovať, aj keď to nie asi celkom košér.

Private Sub DataGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
        If e.KeyValue = 13 Then e.Handled = True
End Sub
Private Sub DataGridView1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyUp
        If e.KeyValue = 13 Then
            e.Handled = True
            Dim stlpec, riadok As Integer
            stlpec = DataGridView1.CurrentCell.ColumnIndex
            riadok = DataGridView1.CurrentCell.RowIndex
            If stlpec >= DataGridView1.ColumnCount - 1 Then
                stlpec = -1
                riadok += 1
            End If
            DataGridView1.ClearSelection()
            Me.DataGridView1.CurrentCell = Me.DataGridView1(stlpec + 1, riadok)
            DataGridView1.Rows(riadok).Cells(stlpec + 1).Selected = True
        End If
End Sub

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

nefunguje.

KeyUp zachytí už nastavenie na prvú bunku riadok=0, stlpec=2

V jednom príspevku som čítal ale ho už neviem najsť p. Linhart

písal že treba previesť nastavenie zmeny DGV,ale nie ako (škoda).

ďakujem

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

Tak toto mi funguje bez problémov

 Private Sub DataGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
        If e.KeyValue = 13 Then e.Handled = True
    End Sub
    Private Sub DataGridView1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyUp
        If e.KeyValue = 13 Then
            e.Handled = True
            Dim stlpec, riadok As Integer
            stlpec = DataGridView1.CurrentCell.ColumnIndex
            riadok = DataGridView1.CurrentCell.RowIndex
            If stlpec >= DataGridView1.ColumnCount - 1 Then
                stlpec = -1
                riadok += 1
            End If
            If riadok >= DataGridView1.RowCount Then
                stlpec = -1
                riadok -= 1
            End If
            DataGridView1.ClearSelection()
            Me.DataGridView1.CurrentCell = Me.DataGridView1(stlpec + 1, riadok)
            DataGridView1.Rows(riadok).Cells(stlpec + 1).Selected = True
        End If
    End Sub

A ak je to možné, zaregistrujte sa, prosím. Vôbec to nebolí.

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

No nie je to celkom bez problémov, pri zápise to chodí trošku inak, ale toto, myslím, nie je až taký problém vyriešiť. Ak chcete napíšte a nájdem riešenie, ale nechcem Vás prípraviť o tú radosť, že si to vyriešite sám.

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

Spresňujem moju otázku po editovaní bunky a následnom stlačení "ENTERu" umožniť prechod na ďaľší stĺpec nie riadok

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

Doplňujem mám tri stĺpce (názov,počet,cena)

chcem vyplniť počet "ENTER" presun na cenu "ENTER" presun

na ďaľší riadok stĺpec "počet" atď.

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

Funguje. Ak nie, napíšte čo Vám to robí.

Private Sub DataGridView1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyUp
        If e.KeyCode = Keys.Enter Then
            Dim riadok As Integer = DataGridView1.CurrentRow.Index
            Dim stlpec As Integer = DataGridView1.CurrentCell.ColumnIndex
            If stlpec >= DataGridView1.ColumnCount - 1 Then
                riadok += 1
                stlpec = -1
            End If
            If riadok >= 0 Then
                DataGridView1.CurrentCell = DataGridView1.Rows(riadok - 1).Cells(stlpec + 1)
            End If
        End If
    End Sub

nahlásit spamnahlásit spam 1 / 1 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