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 :

Probléme propriété DialogResult.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Par défaut Probléme propriété DialogResult.
    Bonjour a tous,

    La propriété dialogResult d'un bouton m'intéresse pas mal, le probléme est qu' apparemment elle est obligée de fermer la fenêtre du bouton.

    Ma situation est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Load_Form2()
    {
         Form1 form = new Form1();
         form.ShowDialog();
     
         if(form.dialogResult == DialogResult.Ok)
         {
             //Traitement.
             // marche mais form se ferme.
         }
    }
     
    // Ceci est un exemple :)
    J'aimerais pouvoir déclencher un traitement sur form2, à partir du form1, sans fermer ma fenêtre (form1).
    Donc lors du clique sur un bouton de form1, j'aimerais pouvoir déclencher mon traitement, mais laisser form1 ouvert.

    Je sais pas si cela est possible avec la propriété DialogResult, si non, existe il une propriété le permettant ?

    J'espère que l'on pourra trouver une solution à mon problème.

    Hiken.

    ps: Désoler d'avance pour le code ou les fautes je vous envoie ça d'un tel ^^

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 521
    Par défaut
    Si vous respectiez le concept de document/vue ou model/vue/contrôleur, cela ne poserait aucun problème.
    Si vous continuez à faire "à l'arrache", passez une référence sur le Formulaire Form1 dans le constructeur de Formulaire Form2 ou utilisez "Show" à la place de "ShowDialog".

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Par défaut
    Merci pour la réponse.

    Desoler mais je ne comprend pas trop "le concept de document/vue ou model/vue/contrôleur" ??

    Je suis encore débutant en C#, et j'ai appris a codé seul donc les concept méthodologique je ne pense pas les avoir acquis.
    Mais je ne demande qu'a apprendre.

    Sinon j'aimerais savoir en quoi utiliser Show au lieu de ShowDialog me permettrait il de pouvoir appeler le traitement sur un autre formulaire ?
    Je sais qu'il y a une histoire de modal / non modal, par rapport au code mais sinon je vois pas.

    Merci pour votre aide

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    showdialog affiche la fenetre en mode modal, aucune autre fenetre de l'application ne peut passer par dessus
    une fois qu'on a défini le dialogresult, ca ferme la fenetre, mais la fenetre reste accessible pour lire ce qui a été saisi dessus

    si tu dois faire une intéraction entre form1 et form2, il vaut mieux que ce soit form2 qui aille appeler quelque chose sur form1
    pour ca il faut que form2 connaisse le form1 qui l'a appelé, et je t'invite à faire une recherche sur ce forum, cette question est souvent traitée
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 521
    Par défaut
    Pour faire très simple, dans votre cas de figure, le concept Document/Vue, c'est qu'il faut séparer les données de la manière de les afficher.

    Cas concret, le jour où les informations stockées dans Form1 changent et que Form2 demande à Form1 des les modifiées, bin vous êtes bon pour modifier Form2 en plus de Form1 et cela se produira en cascade pour arriver, à la fin, à modifier tous les formulaires de votre application.

    Si les données sont stockées dans un objet non graphique (le document) mais qui est connu par tous les formulaires (en le passant en paramètres des constructeurs de formulaire par exemple), le fait d'ajouter ou de supprimer un contrôle pour afficher une donnée dans un formulaire ne fera pas modifié les autres formulaires à moins que cette donnée disparaisse complètement du model de données de l'application. Ce qui est beaucoup moins probable que des modifications d'IHM.
    Vous passez d'un modèle de dépendance N*N (N le nombre de formulaire, ), tout le monde dépend de tout le monde (réseau complet), à un model en N où chaque formulaire ne dépend que du model (réseau en étoile).

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Par défaut
    C'est bon, j'ai trouvé la solution à mon probléme.
    J'ai utilisé le passage de paramètre grâce au event :

    Sur mon form1 je déclare mon event et son délégué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            public delegate void TraitementEventHandler();
     
            public event TraitementEventHandler traitement;
    Sur mon form2 je m'abonne a l'event :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          Form1 form = new Form1();
          form.traitement += new Form1.TraitementEventHandler(PassageDeCeQueJeVeut);
          form.ShowDialog();
    Me reste plus qu'a appeler traitement sur mon form1 où je veut.

    Super pratique faut l'avouer.

    Encore merci et à bientôt sur Devellopez.net

    Hiken.

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

Discussions similaires

  1. [Débutant] Problème propriété Set Binding
    Par cool17 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 07/04/2013, 17h18
  2. Réponses: 0
    Dernier message: 10/01/2011, 09h13
  3. problème de DialogResult
    Par Kropernic dans le forum VB.NET
    Réponses: 6
    Dernier message: 28/07/2010, 15h00
  4. Problème avec DialogResult
    Par phoenix345 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 16/03/2010, 12h02
  5. Problème propriété Form1.location
    Par Luffy49 dans le forum C#
    Réponses: 9
    Dernier message: 14/05/2007, 20h44

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