IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Datagridview sélectionner une cellule et la rendre active [Débutant]


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut Datagridview sélectionner une cellule et la rendre active
    Bonjour tous le monde ,

    Je fais appel à votre aide car je bloque sur ce problème et malgré mes recherches, je ne trouve pas la solution. Si quelqu'un pouvais me débloquer ce serais sympa.

    J'ai un DataGridView présentant deux colonnes. Le première présente des moyens de contacts (téléphone, mails ...) et est ReadOnly. La deuxième est elle destinée à l'encodage de ces moyens de contacts (le numéro de téléphone, l'adresse email ...). En fait, je voudrais sélectionner une cellule et la rendre active afin de pouvoir y encoder des données. Remarque importante, pour passer d'une cellule d'encodage de mon DataGridView à l'autre j'utilise la touche tabulation pour passer à la cellule suivante.

    Voici mon code actuel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Private Sub dgvMoyensTelecommunication_EditingControlShowing(sender As Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgvMoyensTelecommunication.EditingControlShowing
            editingMode = True
    End Sub
     
    Private Sub dgvMoyensTelecommunication_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvMoyensTelecommunication.SelectionChanged
            Dim r As Integer
            Dim c As Integer
     
            If editingMode Then
                r = dgvMoyensTelecommunication.CurrentCell.RowIndex
                c = dgvMoyensTelecommunication.CurrentCell.ColumnIndex
     
                c += 1
     
                If c = dgvMoyensTelecommunication.ColumnCount Then
                    r += 1
                    c = 2
                End If
     
                editingMode = False
                dgvMoyensTelecommunication.CurrentCell = dgvMoyensTelecommunication(c, r)
     
            End If
        End Sub
    Le code semble marcher et me sélectionne bien la cellule se trouvant en dessous de la première. La ou cela ne va plus, c'est qu'il me sélectionne la cellule mais ne la rend pas active en modification. En fait je constate que c'est la cellule de la première colonne contenant l'intitulé du moyen de communication qui semble être sélectionnée alors que si je fais un test demandant la cellule active, c'est celle destinée à l'encodage qui est apparement active. Par ailleurs c'est bien cette dernière qui en surbrillance mais dans laquelle je ne peux rien encoder !

    Comme une image est parfois plus parlante, voici une illustration de mon DataGridView et de ce qui se produit.

    Nom : Image sans titre.png
Affichages : 1626
Taille : 14,0 Ko

    Quelqu'un peut-il m'aider car cela fais un moment que je bloque la-dessus ?!

    J'espère que je ne suis pas trop confus dans mes explications.

    Merci d'avance.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    essaye .beginedit
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Bonjour Pol63,

    Déjà merci de t'intéressé à mon problème .

    j'avais déjà essayer, mais cela ne donne rien. Une autre idée qui me permettrais de me débloquer ?

    Juste par acquis de conscience je remets mon code en y mentionnant ta suggestion. Mais je me répète cela ne produit aucun effet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub dgvMoyensTelecommunication_EditingControlShowing(sender As Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgvMoyensTelecommunication.EditingControlShowing
            editingMode = True
        End Sub
     
        Private Sub dgvMoyensTelecommunication_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvMoyensTelecommunication.SelectionChanged
            Dim r As Integer
            Dim c As Integer
     
            If editingMode Then
                r = dgvMoyensTelecommunication.CurrentCell.RowIndex
                c = dgvMoyensTelecommunication.CurrentCell.ColumnIndex
     
                c += 1
     
                If c = dgvMoyensTelecommunication.ColumnCount Then
                    r += 1
                    c = 2
                End If
     
                editingMode = False
                dgvMoyensTelecommunication.CurrentCell = dgvMoyensTelecommunication(c, r)
                dgvMoyensTelecommunication.BeginEdit(True)
     
            End If
    End Sub
    Si quelqu'un d'autre à une idée à soumettre qu'il n’hésite pas .

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    https://msdn.microsoft.com/fr-fr/lib...vs.110%29.aspx

    ca retourne false dans ton cas ?
    (ca nous avancera pas plus mais ca passe le temps ^^)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Euh. Tu pourrais m'expliquer la démarche STP ? Je te suis pas vraiment là.

    Merci.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    sur le lien l'aide explique que beginedit est une fonction, pas une méthode, donc elle retourne une valeur, en l'occurrence un booléen qui dit si c'est ok ou pas (true ou false)
    et ils expliquent qu'il y a plein de raisons pour lesquelles ca peut retourner false

    mais bon comme je disais ca va surement te retourner false et ca ne nous avancera pas à grand chose ...

    [EDIT]
    je viens de tester sur un projet vide et ca marche sur une colonne texte, y compris depuis le selectionchanged
    donc ca vient de comment tu utilises le dgv surement ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Bonjour Pol63,

    Moi je comprend pas, cela ne fonctionne pas. Tu dis avoir fais ton essais sur une colonne texte ! Peut-être que je me trompe, mais moi j'ai deux colonnes. Si tu n'as que une colonne cela fonctionnera forcément puisque ce sera à tous les coup la cellule suivante qui sera sélectionnée. Regarde l'image de mon DataGridView plus haut, j'ai bien en surbrillance la cellule que je veux mais la sélection (donc la cellule ou je pourrais rentrer des données) est celle avec le libellé (elle est entourée de petit points) et ces bien là que se trouve mon problème. De plus, la colonne des libellé est fort logiquement ReadOnly et ne devrait pas être sélectionnée puisque ce n'est pas celle dans laquelle je souhaite pouvoir ajouter une donnée.

    Peut-être que je me prend la tête pour rien ou bien que je devrais pas utiliser une DataGridView pour présenter ces données. Dans ce cas aurais-tu une idée pour me réorienter ou alors comment solutionner mon problème ? J'avoue que cela me prend la tête et en attendant je n'avance pas ... .

    En tous cas merci pour ton aide.

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    As-tu vérifié en pas à pas que ce sont bien les bons index de ligne et de colonne ?
    Kropernic

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Bonjour Kopernic,

    Oui se sont les bons index ! C'est d'ailleurs grâce à ça que la surbrillance se met dans la bonne cellule. Ce que je comprend pas c'est pourquoi c'est la cellule précédente qui est sélectionnée en modification (petit pointillés).

    Une autre idée ?

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Et en commentant les lignes 13 à 18 dans le 2e code que tu as posté ?
    Kropernic

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    re ,

    Je comprend pas ta démarche là ? Si je fais cela (j'ai testé bien que j'en connaissait le résultat) bien évidemment la surbrillance et les pointillés sont dans la même cellule. Ce qui ne m'arrange pas puisque c'est la cellule suivante qui est destinée à accueillir des données rentrées par l'utilisateur. Par ailleurs, la colonne reprenant les moyens de communication est ReadOnly. Je ne pourrais donc dans tous les cas rien y rentrer.

    Remarque que si je retire le ReadOnly placé sur ma colonne reprenant les moyens de communication en faisant ta modification je peux rentrer des données dans la cellule. Conclusion, c'est bien la présence des pointillés qui définit le fait qu'on puisse rentrer des données dans une cellule, la surbrillance étant juste (selon moi) un repère visuel.

  12. #12
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    C'est pour essayer de situer le problème car je ne comprends pas pourquoi le currentcell ne serait pas celle qui est sélectionnée... (note qu'on pourrait avoir plusieurs cellules sélectionnées mais une seule active...)
    Kropernic

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Ok Kopernic,

    Ce qui me pose question c'est que j'ai beau chercher, je trouve rien parlant de cette problématique ! Je dois pas être le seul à l'avoir rencontrée, non ?

    Trouvez-vous que je me prend la tête en utilisant un DataGridView pour présenter mes données ? Est-ce que quelqu'un me conseillerais autre chose (un autre mode de présentation je veux dire) ?

  14. #14
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Sinon, pour revenir à ma démarche que tu ne comprenais pas, c'est que chez moi, je peux aussi parcourir les cellules des mes datagridviews avec la touche tabulation (heureusement ^^) et je n'ai rien fait pour ça.

    Or j'avais l'impression que c'était ce à quoi servait ces lignes...

    [EDIT]
    Bon, j'ai fait un test chez moi avant d'aller dire n'importe quoi mais tout ce qu'il faut selon moi dans SelectionChanged, c'est le BeginEdit à moins que tu ne veuilles pas que la colonne qui est readonly soit sélectionnable.

    Voici mon code de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Public Class Form1
        Private _client As client
        Private _clients As List(Of client)
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            _clients = New List(Of client)
            _clients.Add(New client("machin", "bidule"))
            _clients.Add(New client("truc", "muche"))
            BindingSource1.DataSource = _clients
        End Sub
     
        Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
            DataGridView1.BeginEdit(False)
        End Sub
    End Class
     
    Public Class client
        Public Property Lastname As String
        Public Property Firstname As String
     
        Public Sub New(lastname As String, firstname As String)
            Me.Lastname = lastname
            Me.Firstname = firstname
        End Sub
    End Class
    et le code du fichier designer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class Form1
        Inherits System.Windows.Forms.Form
     
        'Form overrides dispose to clean up the component list.
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
     
        'Required by the Windows Form Designer
        Private components As System.ComponentModel.IContainer
     
        'NOTE: The following procedure is required by the Windows Form Designer
        'It can be modified using the Windows Form Designer.  
        'Do not modify it using the code editor.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            Me.components = New System.ComponentModel.Container()
            Me.DataGridView1 = New System.Windows.Forms.DataGridView()
            Me.BindingSource1 = New System.Windows.Forms.BindingSource(Me.components)
            Me.LastnameDataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
            Me.FirstnameDataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
            CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
            CType(Me.BindingSource1, System.ComponentModel.ISupportInitialize).BeginInit()
            Me.SuspendLayout()
            '
            'DataGridView1
            '
            Me.DataGridView1.AutoGenerateColumns = False
            Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
            Me.DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.LastnameDataGridViewTextBoxColumn, Me.FirstnameDataGridViewTextBoxColumn})
            Me.DataGridView1.DataSource = Me.BindingSource1
            Me.DataGridView1.Location = New System.Drawing.Point(109, 80)
            Me.DataGridView1.Name = "DataGridView1"
            Me.DataGridView1.Size = New System.Drawing.Size(425, 201)
            Me.DataGridView1.TabIndex = 0
            '
            'BindingSource1
            '
            Me.BindingSource1.DataSource = GetType(test.client)
            '
            'LastnameDataGridViewTextBoxColumn
            '
            Me.LastnameDataGridViewTextBoxColumn.DataPropertyName = "Lastname"
            Me.LastnameDataGridViewTextBoxColumn.HeaderText = "Lastname"
            Me.LastnameDataGridViewTextBoxColumn.Name = "LastnameDataGridViewTextBoxColumn"
            Me.LastnameDataGridViewTextBoxColumn.ReadOnly = True
            '
            'FirstnameDataGridViewTextBoxColumn
            '
            Me.FirstnameDataGridViewTextBoxColumn.DataPropertyName = "Firstname"
            Me.FirstnameDataGridViewTextBoxColumn.HeaderText = "Firstname"
            Me.FirstnameDataGridViewTextBoxColumn.Name = "FirstnameDataGridViewTextBoxColumn"
            '
            'Form1
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.ClientSize = New System.Drawing.Size(619, 367)
            Me.Controls.Add(Me.DataGridView1)
            Me.Name = "Form1"
            Me.Text = "Form1"
            CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit()
            CType(Me.BindingSource1, System.ComponentModel.ISupportInitialize).EndInit()
            Me.ResumeLayout(False)
     
        End Sub
     
        Friend WithEvents DataGridView1 As DataGridView
        Friend WithEvents BindingSource1 As BindingSource
        Friend WithEvents LastnameDataGridViewTextBoxColumn As DataGridViewTextBoxColumn
        Friend WithEvents FirstnameDataGridViewTextBoxColumn As DataGridViewTextBoxColumn
    End Class
    Chez moi, ça fonctionne bien ^^
    Kropernic

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Ben chez moi aussi, cela fonctionne d'emblée. Juste qu'il me semble normal de ne pas passer par la colonne contenant les moyens de communication ! C'est à ça que dois servir mon code.

    Imaginons un autre code, il faudrait parcourir toutes les cellules avec la touche "tab" pour arrivez à celle voulue. Tu trouve cela normal ?

    Je vais peut-être trop loin dans ma démarche, mais bon ... elle me semble logique. Non ?

  16. #16
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Sinon, je viens de vérifier, dans l'event SelectionChanged, la currentcell est la cellule qu'on quitte pas celle dans laquelle on entre...

    C'est p-e bien ça le problème chez toi.

    EDIT : Je confirme.

    Vire l'event selectionchanged et editingcontrolshowing pour ne garder que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub DataGridView1_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
            DataGridView1.BeginEdit(False)
        End Sub
    Kropernic

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Waouw. Là, j'avoue que je suis perdu à la lecture de ton code .

    Tu pourrais m'expliquer STP. Je me débrouille mais là ... je suis pas encore assez calé.

    Pour répondre à ta question effectivement il serait peut être mieux que la colonne qui est readonly ne soit pas sélectionnable. Sinon quel est l'événement qui détermine la cellule dans laquelle on rentre selon toi ?

    Et merci pour le temps que tu me consacre !

    [EDIT]
    Citation Envoyé par Kropernic Voir le message
    Sinon, je viens de vérifier, dans l'event SelectionChanged, la currentcell est la cellule qu'on quitte pas celle dans laquelle on entre...

    C'est p-e bien ça le problème chez toi.

    EDIT : Je confirme.

    Vire l'event selectionchanged et editingcontrolshowing pour ne garder que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub DataGridView1_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
            DataGridView1.BeginEdit(False)
        End Sub
    Ok Kopernic, excuse moi pour ma question. J'avais pas lu entièrement ta réponse. J'ai fais ce que tu dis ci-dessus. Effectivement on rentre dans la cellule directement en modification mais je dois utiliser la touche tabulation pour arriver dans la cellule voulue.

    Il n'y a pas un moyen de passer d'une cellule modifiable à l'autre directement ? Par exemple si je remplis la cellule modifiable en regard de téléphone bureau puis que j'utilise la touche tab, d'arriver directement dans la cellule en regard de téléphone mobile ? Je sais pas si j'explique bien ce que je veux arriver à faire !

  18. #18
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ca c'est le next step.

    Maintenant, on sait pourquoi ce n'est pas la cellule sélectionnée qui est active.

    Par contre là, j'dois corriger mes propres bug aussi, j'reviens vers toi plus tard
    Kropernic

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Ok Kopernic,

    Je vais avancer sur autre chose en attendant. Merci pour le temps que tu m'as déjà consacré . Dans l'intervalle, si je trouve je te dis quoi bien-sûr mais je vois bien que tu es plus fort que moi donc ... . A plus tard.

  20. #20
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello,

    Pour sauter les cellules en readonly, on peut modifier l'event CellEnter comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub DataGridView1_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
            With DataGridView1
                If Not .CurrentCell.ReadOnly Then
                    .BeginEdit(False)
                Else
                    SendKeys.Send("{tab}")
                End If
            End With
        End Sub
    Mais faut voir si c'est bien ce comportement que tu veux. Car ça le fait aussi si tu cliques sur la cellule readonly.

    Si tu as des cellules qui ne sont pas forcément en readonly mais qui sont invisibles, il faut p-e en tenir compte dans le code (pas testé).
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. sélectionner une cellule d'un TStringgrid
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 10
    Dernier message: 12/02/2010, 20h00
  2. [2.0 DataGridView] comment sélectionner une cellule par le code
    Par juniorAl dans le forum Windows Forms
    Réponses: 5
    Dernier message: 01/07/2008, 19h46
  3. Réponses: 3
    Dernier message: 16/10/2007, 16h25
  4. [TStringGrid] Comment sélectionner une cellule ?
    Par zidenne dans le forum Composants VCL
    Réponses: 1
    Dernier message: 18/11/2005, 10h45
  5. [JTable] Sélectionner une cellule
    Par GENERYS dans le forum Composants
    Réponses: 2
    Dernier message: 12/10/2005, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo