Saisie dans un DATAGRIDVIEW

phenix242 Messages postés 5 Date d'inscription lundi 5 août 2013 Statut Membre Dernière intervention 11 février 2014 - 29 août 2013 à 17:57
phenix242 Messages postés 5 Date d'inscription lundi 5 août 2013 Statut Membre Dernière intervention 11 février 2014 - 11 févr. 2014 à 13:18
Bonjour, une question de débutant

J'aimerai que lors de la saisie manuelle dans une cellule dans un datagrid view, apres validation de la cellule ( bouton ENTREE ) je passe à la cellule de droite et non celle de du bas. une fois arrivé a la cellule de la 4 eme colonne par exemple je veux revenir a la ligne de la ligne suivante et ainsi de suite.

2 réponses

Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
1 sept. 2013 à 18:24
J'ai ouvert un nouveau projet.
J'ai nommé "Accueil" le formulaire d'accueil.
Sur ce formulaire, j'ai déposé
un contrôle bIni As Button, avec bIni.Text = "Initialiser"
un contrôle bInc As Button, avec bInc.Text = "Incrémenter"
un contrôle DGV As DataGridView

Dans ce formulaire, j'ai écrit le code suivant
Public Class Accueil
    Private nX As Integer, nY As Integer, nC As Integer, Mots() As String
    Private x As Integer, y As Integer, z As Integer

    Public Sub New()
        InitializeComponent()
        nX = 4 : DGV.ColumnCount = nX
        nY = 3 : DGV.RowCount = nY
        nC = nY * nX
        ReDim Mots(nC)
        Mots(0) = "Que"
        Mots(1) = "j"
        Mots(2) = "aime"
        Mots(3) = "à"
        Mots(4) = "faire"
        Mots(5) = "apprendre"
        Mots(6) = "ce"
        Mots(7) = "nom"
        Mots(8) = "utile"
        Mots(9) = "au"
        Mots(10) = "sage"
        Mots(11) = "!"
    End Sub

    Private Sub bIni_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bIni.Click
        Initialiser()
    End Sub

    Private Sub bInc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bInc.Click
        Incrémenter()
    End Sub

    Private Sub Initialiser()
        x = 0 : y = 0 : z = 0
        Afficher()
    End Sub

    Private Sub Incrémenter()
        If x = nX - 1 Then
            x = 0
            If y = nY - 1 Then
                MessageBox.Show("ça va pas, la tête?")
            Else
                y = y + 1
            End If
        Else
            x = x + 1
        End If
        z = z + 1
        Afficher()
    End Sub

    Private Sub Afficher()
        DGV.Item(x, y).Value = Mots(z)
    End Sub

End Class

À l'exécution, je clique une fois sur le bouton "Initialiser", puis plusieurs fois sur le bouton "Incrémenter".
Attrapez çà, et dites-moi si c'est votre pointure.
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
2 sept. 2013 à 08:42
Erratum : Mots(7) = "nombre"
0
torki2 Messages postés 56 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 16 novembre 2019 1
17 sept. 2013 à 11:00
Bonjour Phenix
pour ta question ajouter cette fonction à ta classe
	Protected Overrides Function ProcessCmdKey _
 (ByRef msg As System.Windows.Forms.Message, _
 ByVal keyData As System.Windows.Forms.Keys) As Boolean
		Try
			If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
				SendKeys.Send("{Tab}")
				Return True
			End If
			Return MyBase.ProcessCmdKey(msg, keyData)
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try
	End Function
0
phenix242 Messages postés 5 Date d'inscription lundi 5 août 2013 Statut Membre Dernière intervention 11 février 2014
11 févr. 2014 à 13:18
Bonjour Torki.
dsl de te repondre si tard.... mais cela marche nikel.

encore merci!!!
0
Rejoignez-nous