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

C# Discussion :

[c#][VS 2005] histoire de focus


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 35
    Points
    35
    Par défaut [c#][VS 2005] histoire de focus
    Bonjour,
    j'ai une série de probléme de focus dans mon IHM à la création de nouvelles fenêtres.

    Mon premier problème débute lors du lancement de l'appli, j'ouvre un OpenFileDialog pour analyser un fichier. Cette analyse se fait dans une autre classe instanciée comme il faut. Celle-ci commence une analyse du fichier et si celui-ci est non valide une fenêtre d' "Attention" est ouverte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    window = new Attention();
                    window.TopLevel = true;
                    window.ShowDialog();
    Donc la fenêtre se met au premier plan mais n'a pas le focus. J'ai essayé de faire un Activate mais rien ne se passe. A cet instant une seule fenêtre est ouverte celle de Attention. La fenêtre principale n'étant pas encore lançée.

    De plus quelque soit le résultat de l'analyse lors de l'ouverture de la fenêtre principale celle ci n'a pas le focus.

    Si quelqu'un à une piste ?

    merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    ShowDialog permet d'ouvrir une fenêtre modale. La fenêtre mère n'a donc plus le focus et est automatiquement désactivée jusqu'à ce que la fenêtre modale soit fermée.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    La fenêtre modale apparaît lorsque le choix du fichier n'est pas valide. Dans ce cas là c'est la seul fenêtre visible. (la fenêtre principale n'étant pas encore lancée)
    Cette fenêtre modale n'a pas le focus (sauf si c'est la seule fenêtre à l'écran) à son apparition. Cette fenêtre modale apparaît uniquement entre 2 OpenFileDialog.

    affichage de l'OpenFileDialog
    si le choix est valide : on ouvre la fenêtre principale
    sinon : on ouvre la fenêtre d'erreure qui lors de sa validation retourne sur le OpenFileDialog


    PS : je sais c'est tordu mais je trouvais ça pas mal à l'origine.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    lu en diagonale, mais pour éviter le showdialog et etre au dessus en laissant la possibilité d'avoir le focus sur celle d'en dessous y a topmost ou toplevel (un des 2 mais je sais plus lequel)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    La fenêtre est obligatoirement une fenêtre modal car elle indique la raison de l'erreur et doit prévénir l'uilisateur directement. Et la fenêtre est déjà en premier plan mais est "grisé" car elle n'a pas le focus.


    Pour information, faîtes simplement un nouveau projet avec ceci dans la form principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public Form1()
            {
                OpenFileDialog of = new OpenFileDialog();
                of.ShowDialog();
                InitializeComponent();
                this.TopMost = true;
            }
    A l'apparition de la Form1 celle-ci apparaît au-dessus mais sans le focus.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Hum ... pourquoi le code est dans le constructeur ?

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    moi je comprends pas trop ce que veux tu veux

    dejà faire des choses avant initializecomponent c'est risqué
    et puis si tu ouvres une fenetre modale, c'est normale qu'une autre form (en l'occurrence form1) ne puisse pas avoir le focus

    alors à mon avis essaye de faire des choses faisable, tu auras surement plus de succès

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    pour que la fenêtre principale s'initialise avec les valeurs d'un fichier choisi par l'utilisateur (ici je n'ai pas tout mis).

    pourquoi cette question?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    moi je comprends pas trop ce que veux tu veux

    dejà faire des choses avant initializecomponent c'est risqué
    et puis si tu ouvres une fenetre modale, c'est normale qu'une autre form (en l'occurrence form1) ne puisse pas avoir le focus

    alors à mon avis essaye de faire des choses faisable, tu auras surement plus de succès
    OpenFileDialog reste ouverte que peu de temps, celle si est obligatoirement modal (sauf si redefinition du composant). Lorsque celle ci se ferme (validation d'une donnée d'entrée), la Form1 (fenêtre principale) s'ouvre en remplissant les champs avec les données correspondant au fichier sélectionné.

    Une fenêtre modale a forcement le focus mais une fois celle-ci fermée j'aimerai le récupérer.

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    il suffit de coder de manière plus rationnelle

    ton openfiledialog, tu le fais avant d'appeler le new sur form1
    et si form1 est ta fenetre de démarrage c'est possible aussi

    ou est le.show de form1 ? c'est ta fenetre de départ ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    ou est le.show de form1 ? c'est ta fenetre de départ ?
    Form1 est la fenêtre de départ. (donc pas de show).

    On ne peut pas faire un OpenFileDialog avant la création de la fenêtre de départ ?

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    si mais faut rien coder avant initializecomponent
    ca vient de là que ton form1 ne reprenne pas le focus après je pense

    déplace ca dans l'évènement load

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    humpffff !!!!
    Ca fait 2 semaines que je voyais pas d'où ça venait, alors que c'etait aussi simple que ça. Pourtant j'étais sur de l'avoir tester.

    MERCI MERCI !!!!!!!!!!!!!!!!!!!!


    Sinon mettre un this.Activate(); dans le load permet d'avoir toujours le focus.

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

Discussions similaires

  1. Histoire de focus
    Par faldo1 dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 19/03/2010, 01h10
  2. Histoire de focus
    Par Pymento dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/09/2009, 14h25
  3. Histoire de focus
    Par Laskar dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/04/2008, 15h27
  4. [VB 2005] Combobox, focus, clavier
    Par hulahup dans le forum Windows Forms
    Réponses: 9
    Dernier message: 06/02/2008, 18h50
  5. Histoire de Focus()
    Par softflower dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 23/09/2005, 14h32

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