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 :

Comment forcer le focus dans une cellule ?


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 151
    Points
    151
    Par défaut Comment forcer le focus dans une cellule ?
    Bonjour

    Comment forcer le focus dans une cellule

    je m'explique :

    j'ai une condition sur une cellule (par exemple je ne doit pas saisie que les chiffres paires )

    donc si je saisie un chiffre impaire la cellule reste tjrs la cellule selected ou la CurrentCell et je ne doit pas autoriser le déplacement vers une autre cellule

    merci.....

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Si tu ne précises pas quel composant tu utilises ni aucun détail sur la plateforme, ça va être difficile de te répondre...

    C'est une appli Web ou Windows ? Faite avec Windows Forms, WPF, Silverlight, ASP.NET, autre chose ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 671
    Points : 1 171
    Points
    1 171
    Par défaut
    Bonsoir,
    vous nous direz de quel type de cellule il s'agit?
    Si c'est celle d'un Datagridview, ici, tant que le texte saisi n'est pas satisfaisant, le Focus reste sur la cellule avec :

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 151
    Points
    151
    Par défaut
    pardon j'ai pas bien précisé :

    le composant est la cellule d'1 datagridview avec Windows Forms

    je vais tester

    merci

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 151
    Points
    151
    Par défaut
    rebonjour

    avec

    ca ne fonction pas vraiment comme je veux :

    voie ci mon code pour l'even 'CellValueChanged' de mon datagridview

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub DataGEcriture_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGEcriture.CellValueChanged
     
    if  e.ColumnIndex = 1 Then
                        If  'Compte Existe'  Then
                            CompteTrouve = True
                        Else
                            CompteTrouve = False
                        End If
     End If
    End Sub
    et pour l'even CellValidating

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub DataGEcriture_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGEcriture.CellValidating
     If  e.ColumnIndex = 1 Then
                    If CompteTrouve Then
                        e.Cancel = False
                    Else
                        e.Cancel = True
                    End If
                        DataGEcriture.CurrentCell = DataGEcriture.Item(e.ColumnIndex, e.RowIndex)
     End If
     End Sub

    une fois " e.Cancel est à True" les changements dans la cellule ne passe pas par l'even 'CellValueChanged' et la variable CompteTrouve reste tjrs à False même si le compte existe

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 671
    Points : 1 171
    Points
    1 171
    Par défaut
    Bonjour,
    en l'état de ce que je connais de votre programme, je traiterais tout dans le Validating, genre :
    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
        Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
     
            If e.ColumnIndex = 2 Then
                '--- En 1er la vérification de la valeur entrée
                If e.FormattedValue.ToString = "Compte reconnu et existant" Then
                    CompteTrouve = True
                Else
                    CompteTrouve = False
                End If
                '--- En second découlant du 1er on bloque ou pas. 
                If CompteTrouve Then
                    e.Cancel = False
                Else
                    e.Cancel = True
                End If
     
            End If
        End Sub

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Pour reprendre comme l'exemple bien détaillé de chrismonoye, (ce qui donne une explication très claire) mais en simplifiant l'éciture du code (avec un petit commentaire pour expliquer si cela semble plus complexe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Private Sub DataGridView1_CellValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
            ' (aide microsoft) : Si la valeur de la cellule n'est pas validée, donnez à la propriété Cancel la valeur true. 
            '                    De cette manière, le contrôle DataGridView empêche le curseur de quitter la cellule. 
            ' donc si le compte existe (égalité vrai, donne true) valide la cellule (par le not) en mettant faux dans e.Cancel
            If e.ColumnIndex = 2 Then e.Cancel = Not (e.FormattedValue.ToString = "Compte reconnu et existant")
        End Sub
    Il me semble que l'on gagne en lisibilité .

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 151
    Points
    151
    Par défaut
    Ohhh oui ca tres bien fonctionner


    merci

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

Discussions similaires

  1. focus dans une cellule d'une JTable
    Par coil dans le forum Composants
    Réponses: 5
    Dernier message: 07/07/2010, 17h15
  2. JTable : comment insérer un bouton dans une cellule ?
    Par donyas dans le forum Composants
    Réponses: 2
    Dernier message: 08/08/2006, 15h54
  3. [VBA-E] Comment écrire à la suite dans une cellule ?
    Par bogosse dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2006, 13h03
  4. Comment forcer le format d'une cellule?
    Par cha_cha dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/11/2005, 14h31
  5. Comment créer un commentaire dans une cellule d'Excel ?
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/04/2005, 09h23

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