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 :

Colonne "bouton radio" dans un DataGridView


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 002
    Par défaut Colonne "bouton radio" dans un DataGridView
    Bonjour,

    J'ai un DataGridView correspondant à une liste de fraises, voici la liste des colonnes :
    - sélectionnée pour ébauche
    - sélectionnée pour demi-finition
    - sélectionnée pour finition
    - diamètre
    - hauteur
    - nombre de dents
    - hélice
    -...

    Les trois premières colonnes sont de type "case à cocher"

    Voici ma question : je ne doit permettre à l'utilisateur de ne sélectionner qu'une seule fraise pour l'ébauche

    Actuellement, j'affiche une erreur si plus de deux fraises sont cochées pour l'ébauche

    idem pour la demi-finition et la finition

    J'aimerais utiliser, au lieu de cases à cocher, des boutons radios, de telle sorte qu'il soit impossible de cocher plus d'une case par colonne, si vous voyez ce que je veux dire

    A noter également : il doit être possible de ne rien cocher

    Pour résumer, dans chaque colonne ébauche, demi-finition ou finition il n'est autorisé que une case cochée ou zéro case cochée.

    En fait cela revient à pouvoir, pour chaque phase (ébauche, demi-finition et finition), sélectionner une ligne ou aucune ligne.

    Quelle est la façon la plus élégante de procéder :
    - faire une colonne "radio bouton" si c'est possible ?
    - conserver les cases à cocher et détecter le cochage pour décocher les autres cases éventuelles
    - utiliser une cellule texte standard non éditable et coder le comportement de A à Z

    Sachant que je souhaite que la saisie puisse se faire "normalement" au clavier ou à la souris

    Merci

    A bientôt

  2. #2
    Membre éprouvé
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par défaut Re
    Bonjour,

    Selon moi et si j’ai bien compris :

    Lorsque l’utilisateur sélectionne une case à cocher, dans l’événement enregistrer le numéro de la ligne du DGV dans une variable.
    Si l’utilisateur coche à nouveau vérifiez que le numéro de la ligne corresponde à celle de la variable. Si celles-ci ne correspondent pas
    (ou plus de 2 fraises soit 2 lignes), désélectionnez la ou les cases par du code est indiquer les restrictions à l’utilisateur par exemple
    dans un Label.

    Si j’ai mal compris peut-être faire le test dans l’événement sur les colonnes.

    Cordialement.

  3. #3
    Membre chevronné Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 002
    Par défaut
    Citation Envoyé par DD-78 Voir le message
    Bonjour,

    Selon moi et si j’ai bien compris :

    Lorsque l’utilisateur sélectionne une case à cocher, dans l’événement enregistrer le numéro de la ligne du DGV dans une variable.
    Si l’utilisateur coche à nouveau vérifiez que le numéro de la ligne corresponde à celle de la variable. Si celles-ci ne correspondent pas
    (ou plus de 2 fraises soit 2 lignes), désélectionnez la ou les cases par du code est indiquer les restrictions à l’utilisateur par exemple
    dans un Label.

    Si j’ai mal compris peut-être faire le test dans l’événement sur les colonnes.

    Cordialement.
    Oui je pensais faire quelque chose de ce genre

    Mais en explorant les forums je me suis rendu compte que les contrôles DataGridView ne génèrent pas d’événements CheckedChanged, et d'après ce que j'ai pu lire les événements du DataGridView ne correspondent pas bien pour faire un équivalent au CheckedChanged (certains clics ou frappe au clavier ne sont pas pris en compte, pris en compte en retard, ou déclenchés alors que rien ne s'est passé)

    A bientôt

  4. #4
    Membre éprouvé
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par défaut Re
    Et avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub DGV_Click(sender As Object, e As DataGridViewCellEventArgs) Handles DGV.CellContentClick
            MsgBox("Clique")
        End Sub
    Je n'ai pas testé!

    Cdt.

  5. #5
    Membre chevronné Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 002
    Par défaut
    Citation Envoyé par DD-78 Voir le message
    Et avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub DGV_Click(sender As Object, e As DataGridViewCellEventArgs) Handles DGV.CellContentClick
            MsgBox("Clique")
        End Sub
    Je n'ai pas testé!

    Cdt.
    Un "click" ne corresponds pas nécessairement à un cochage ou décochage (on peut cliquer dans la cellule mais juste à côté de la case à cocher)

    de plus la saisie au clavier n'est pas prise en compte

    A bientôt

  6. #6
    Membre éprouvé
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par défaut Re
    Oui il faut approfondir en faisant ceci par exemple :

    Nécessite pour l'exemple :
    - DataGridView1 (il faut définir les colonnes)
    - Label1

    Initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i As Integer = 0 To 2
                DataGridView1.Columns(i).ReadOnly = False 'agit sur les cellules des colonnes mais pas sur chekbox.
            Next

    Evénements
    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
        Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
            Dim XoldRowIndex As Integer = DataGridView1.CurrentCellAddress.X 'retourne le numéro de la colonne de la cellule active
            Dim YoldRowIndex As Integer = DataGridView1.CurrentCellAddress.Y 'retourne le numéro de la ligne de la cellule active
     
     
            If (DataGridView1.CurrentCellAddress.X = 0 Or DataGridView1.CurrentCellAddress.X = 1 Or DataGridView1.CurrentCellAddress.X = 2) Then
     
                If (DataGridView1.Rows(YoldRowIndex).Cells(XoldRowIndex).Value = 0) Then
                    DataGridView1.Rows(YoldRowIndex).Cells(XoldRowIndex).Value = 1
                Else
                    DataGridView1.Rows(YoldRowIndex).Cells(XoldRowIndex).Value = 0
                End If
     
                ' resutat du checked dans la cellule.
                Label1.Text = "checked : " & DataGridView1.Rows(YoldRowIndex).Cells(XoldRowIndex).Value
                Label1.Text += "          Collonne = " & XoldRowIndex + 1
                Label1.Text += "    Ligne = " & YoldRowIndex + 1
     
            End If
     
        End Sub
     
        Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
     
            If (DataGridView1.CurrentCellAddress.X > 2) Then
                Label1.Text = ""
            End If
        End Sub
    Par contre on peut toujours cliquer à côté de la case à cocher!

    Cdt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/03/2011, 16h05
  2. Colonne de bouton dans Datagridview
    Par jubourbon dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/01/2010, 18h30
  3. Réponses: 0
    Dernier message: 14/11/2008, 12h35

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