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 :

problème de DialogResult


Sujet :

VB.NET

  1. #1
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut problème de DialogResult
    Hello les gens.

    Je suis à la recherche d'information concernant la propriété DialogResult d'une fenêtre de dialogue.

    Quelques explications...

    Lorsque je lance l'application, la fenêtre principale s'affiche (logique^^).
    Sur cette fenêtre, je clique sur un bouton (btnServer) qui m'affiche via la méthode ShowDialog() la fenêtre listant les serveurs dans un DataGridView.
    Sur la fenêtre listant les serveurs, je choisis mon serveur et je clique le bouton Edit qui m'affiche la fenêtre d'édition du serveur via la méthode ShowDialog().

    Ce qui me trouble, c'est que à la fin de l'évènement Load de la fenêtre listant les serveurs, sa propriété DialogResult est à None (ça c'est normal) et que dès le début de l'évènement click de btnServer, la propriété DialogResult est devenue Cancel.

    Je voudrais savoir pourquoi ce changement de valeur intervient. Il n'y a aucun évènement actif sur le DataGridView qui pourra intervenir lors du choix du record. Et même si je laisse sur le record actif lors de l'ouverture et que je ne fais que cliquer sur Edit, le changement se produit.

    Du coup, lorsque j'ai fini l'édition du serveur, le programme revient bien sur la fenêtre listant les serveurs mais vu que sa propriété DialogResult est à Cancel, elle se ferme immédiatement et l'utilisateur est renvoyé à la fenêtre principale au lieu de rester sur celle des serveurs.

    D'où ma question : Est-ce que quelqu'un sait précisément comment fonctionne cette propriété et les mécanismes qui lui sont associés ?

    Merci d'avance.

    Griftou.

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Petite question...

    Quand l'utilisateur clique sur "Edit", pourquoi ne retournes tu pas toi-même DialogResult.Ok par exemple ?

  3. #3
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Bin pcq'il n'y a aucun résult à retourner à ce moment là....

    Cette fenêtre de dialogue est sensée rester ouverte jusqu'à ce que l'utilisateur en ait fini avec les serveurs.

    Entre-temps, il est sensé pouvoir modifier et/ou ajouter un ou plusieurs serveurs.

    Pour être sûr d'être bien clair et parce qu'un petit dessin vaut mieux qu'un long discours, j'ai placé un schéma en pièce jointe.

    Sur ce schéma, on voit bien que quand la fenêtre d'édition se ferme, elle revient à la fenêtre listant les serveurs. Et ce n'est que lorsque l'utilisateur clique sur le bouton OK de cette fenêtre que j'affecte une valeur à la propriété DialogResult et que cette fenêtre se ferme pour renvoyer l'utilsateur à la fenêtre principale.

    Or, VS affecte la valeur 2 (c.à.d Cancel) à la propriété DialogResult de la fenêtre serveur quelque part entre la fin du Load et le click sur btnEdit.

    Griftou.
    Images attachées Images attachées  

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Peut être pourrais tu montrer ton code quand tu appelles et que tu fermes la première fenêtre et la deuxième également.

    Pour voir comment tu utilises les dialog result.

  5. #5
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ma machine de développement n'a pas d'accès internet, ça va donc être compliqué ^^.

    Mais sinon, dans la fenêtre principale, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dlgServers.ShowDialog()
    Dans la fenêtre listant les serveurs je fais dans le click de btnEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If dlgEditServer.ShowDialog = Windows.Forms.DialogResult.OK 
    Then
        dlgServers_Load(Nothing,Nothing)
    End If
    Et dans le click de btnCancel de la fenêtre d'édition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
    'Me.Close()
    J'ai enlevé la dernière ligne pour faire des tests et j'ai constaté que la fenêtre se fermait quand même. J'en ai donc conclu qu'il doit y avoir quelque qui vérifie la valeur de DialogResult et agit en conséquence.

    Voilà, il n'y a pas tout le code mais le reste, ce ne sont que des initialisations de composants et des accès DB. Rien à voir avec l'affichage des fenêtres.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Vérifie que ton bouton btnServer n'ait pas la propriété DialogResult = Cancel (si c'est le cas met à None).

    La valeur de retour des showdialogs (le DialogResult) peut être initialisée par la propriété DialogResult du bouton appuyé ou par code.

    Plus globalement, je ne suis pas persuadé du bien fondé d'utiliser une boite de dialogue pour traiter ces cas.

  7. #7
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    C'était bien ça !

    Jamais je n'y aurais songé !

    J'ai probablement du ré-utiliser le bouton cancel comme bouton édit car je n'avais pas besoin de bouton cancel.

    Sinon, ce n'est p-e pas le meilleur choix que d'utiliser une boite de dialogue mais étant donné que je ne fais que des showdialog, je me suis dit que cela semblait logique.

    Puis si jamais c'est pas fonctionnel, ça donnerait p-e envie à ma boite de me payer la formation que je réclame depuis 2 ans.

    J'veux bien que .NET n'est pas super compliqué mais y a quand même des choses qui sont nécessaire de se faire apprendre.

    Le savoir ne s'acquiert qu'en le partageant.

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

Discussions similaires

  1. Problème avec DialogResult
    Par phoenix345 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 16/03/2010, 12h02
  2. Probléme propriété DialogResult.
    Par Hiken dans le forum C#
    Réponses: 5
    Dernier message: 20/10/2009, 13h37
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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