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 :

[VB2005] Probleme de Focus


Sujet :

VB.NET

  1. #1
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut [VB2005] Probleme de Focus
    Bonsoir All,

    J'ai un probleme avec l'affectation de focus sur des boutons.
    Alors j'arrive à donner le focus, mais uniquement lors du premier appel, mais apres, c'est tjrs la premiere selection qui revient.

    Alors pour etre plus clair, je vous donne un exemple :
    -J'appelle une form (y) à partir d'une autre form (x).
    - Sur la form y, il y a 3 boutons (a/b/c).
    - Selon l'appel de la form x, je defini si a,b,c doit avoir le focus ou non.

    Alors jusqu'à la, no problemo, j'y arrive en faisant comme cela :
    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
     
    If Venu = 1 Then
                Button_1.TabIndex = 0
                Button_2.TabIndex = 1
                Button_3.TabIndex = 2
                Button_1.Focus()
    ElseIf Venu = 2 Then
                Button_1.TabIndex = 2
                Button_2.TabIndex = 0
                Button_3.TabIndex = 1
                Button_2.Focus()
    ElseIf Venu = 3 Then
                Button_1.TabIndex = 1
                Button_2.TabIndex = 2
                Button_3.TabIndex = 0
                Button_3.Focus()
    Else
                Button_1.Focus()
    End If
    Le probleme survient lors des futurs et autres appels de la form y, car apres avoir ferme la form y et ouvert un autre fois y, il ne donne le focus qu'au bouton du premier appel de la form !!!
    En clair, si lors du premier appel de y, je defini le bouton b comme focus, il affiche le focus sur b sans probleme, mais pour tous les autres appels, meme si je defini a ou c, il continue de definir le focus sur b ... et je vois pas le pourquoi du comment ???

    Merci pour votre aide.
    Danyel.

  2. #2
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Déjà commence par faire un selon cas ...

    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
    Select case (Venue)
     
    case "1"
                Button_1.TabIndex = 0
                Button_2.TabIndex = 1
                Button_3.TabIndex = 2
                Button_1.Focus()
     
    case "2"
                Button_1.TabIndex = 2
                Button_2.TabIndex = 0
                Button_3.TabIndex = 1
                Button_2.Focus()
     
    case "3"
                Button_1.TabIndex = 1
                Button_2.TabIndex = 2
                Button_3.TabIndex = 0
                Button_3.Focus()
    case Else:
                Button_1.Focus()
     
    End Select
    je ne suis pas sur de la syntaxe... à vérifier, mais cela corespond mieux a ton code que des eslseif

  3. #3
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut
    lol merci, mais dans mon code il y a deja le select case, j'ai tape le code ci-dessus à la volée et pour donner un exemple
    Mais ca prouve que la premiere pensee n'est pas souvent la meilleure

  4. #4
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut
    Personne n'a une solution pour ce petit probleme de focus ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Il faudrait que tu nous donnes dans quel événement tu fais ce bout de code... car si tu le fais au form_load le probleme est le suivant : utilisant des form.hide et form.show l'événement load ne se reproduit pas... Mieux vaut donc utiliser un visibleChanged comme événement... Je pense que deux ans apres tu ne verras jamais la réponse mais si jamais cela peut aider quelqu'un

  6. #6
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut
    Effectivement, c'est bien dans le form_load.

    Merci pour ton info, mais peux tu en dire plus sur l'événement load ne se reproduit pas... ???
    C'est le mot reproduit que je ne comprends pas car le form_load est bien execute.

    Merci pour ton aide.

  7. #7
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    L'évenement Load ne se produit qu'une seule fois par instance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim frmEcran As New Form
     
    frmEcran.Show
    '=> Evenement Load déclenché
     
    frmEcran.Hide
    '...
     
    frmEcran.Show
    '=> L'évenement Load n'est plus déclenché ...
    Par contre, comme dis par "jerem", tu peux mettre ton code dans l'évenement VisibleChanged ou Activate.

  8. #8
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut
    Ah ok j'ai compris ce qu'il voulais dire, mais ca ne rentre pas en compte, car je ne hide pas la form, je la close.

    Je pense qu'il doit y avoir qq chose a decharger ou a reinitialiser ... mais je vois pas.

    Sinon j'appelle la form y comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Venu = x                               'x = a/b/c
    Form_y.ShowDialog()
    Et je ferme la form y comme cela :

    Meme si je debute en .net, je pense que tout a l'air correct.
    (suis presque sur qu'il faut un dispose qq part et de qq chose, mais alors là )

  9. #9
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut
    Je viens de faire qq tests, et je viens de m'apercevoir que faire :
    ne donne pas le focus en tant que tel, car si on demande s'il est focused, la reponse est false.

    ...
    Je m'embourbe complet

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 174
    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 174
    Points : 25 115
    Points
    25 115
    Par défaut
    il faut ptete attendre que la fenetre soit affichée reellement avant de mettre le focus


    sinon comment form2 recupère la variable qui vient de form1 ?
    il nous faudrait ton code, et le vrai !
    par si tu fais que nous donner du code que t'as pas écrit, on va faire que corriger du code qui ne corrige pas ton problème

  11. #11
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut
    Le code vous l'avez tous, car il n'y a que cela.
    Et le code de l'ensemble fonctionne sans probleme, SAUF la commande focus sur le bouton !!!
    Je vous redonne en entier.

    Appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Venu As Integer = 0
    Venu = x                               'x = (0/1/2)
    Form_y.ShowDialog()
    Load
    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
    Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Select Case Venu
                Case 1
                    Button_1.TabIndex = 0
                    Button_2.TabIndex = 1
                    Button_3.TabIndex = 2
                    Button_1.Focus()
                Case 2
                    Button_1.TabIndex = 2
                    Button_2.TabIndex = 0
                    Button_3.TabIndex = 1
                    Button_2.Focus()
                Case 3
                    Button_1.TabIndex = 1
                    Button_2.TabIndex = 2
                    Button_3.TabIndex = 0
                    Button_3.Focus()
            End Select
     
    End Sub
    Franchement rien de bien complique, le choix Venu se fait sans aucun probleme car les tabindex sont biens mis à jour.
    Mais le focus à partir du deuxieme appel ...

  12. #12
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut
    Pour controler, j'ai fait un test a partir d'une nouvelle solution vide, avec juste les 2 forms, un appel par bouton sur x et 3 boutons sur y pour focus ... resultat identique ... pense qu'il y a un bug dans vb2005 (ou qq chose d'autre qui garde l'etat du focus pour les futurs appels en empechant la maj)

  13. #13
    Membre régulier Avatar de roshy
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 107
    Points : 106
    Points
    106
    Par défaut
    Et si au lieu de

    tu mettais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ActiveControl = Button_1
    ça marcherait ?

  14. #14
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 685
    Points : 1 959
    Points
    1 959
    Par défaut
    Et OUI là ca fonctionne !!!


    J'avais pas pense à cela.
    Un immense merci à toi et merci à tous.

  15. #15
    Membre régulier Avatar de roshy
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 107
    Points : 106
    Points
    106
    Par défaut
    Tu es le bienvenue, content d'avoir servi à quelque chose

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

Discussions similaires

  1. probleme avec focus sous ie du flash
    Par éloi_75 dans le forum Flash
    Réponses: 15
    Dernier message: 22/02/2007, 23h27
  2. [VB2005]Probleme de Variable
    Par ChRom dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/02/2007, 15h09
  3. Surment un probleme de focus ?
    Par quentingsc dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 04/02/2007, 18h34
  4. [VB2005] Probleme mail
    Par hugo1787 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/11/2006, 18h14
  5. [C#] Probleme de focus
    Par kenzo080 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 27/01/2006, 15h58

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