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 :

Rafraîchissement contrôle d'un formulaire à partir d'un autre formulaire


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 70
    Par défaut Rafraîchissement contrôle d'un formulaire à partir d'un autre formulaire
    Bonjour,

    Ci-dessous mon approche pour gérer le rafraîchissement entre formulaire :

    - Ouverture d'un formulaire "formListe" qui affiche une liste de catégories de ce que vous voulez dans un contrôle dataview (contrôle avec une propriété d’accessibilité à public).
    - Clique sur un bouton pour ouvrir un formulaire de saisie "formSaisie" d'une nouvelle catégorie (je passe l'instance de mon objet "formListe" dans la méthode d'ouverture du formulaire de saisie pour pouvoir manipuler et donc actualiser le dataview liste).
    - Je vérifie et valide la saisie en BDD.
    - j'actualise le dataview de "formListe"
    - je ferme "formSaisie"

    Existe t'il une autre approche ?

    MErci

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Plus simplement, FormList pourrait se rafraîchir lui-même après fermeture de FormSaisie. FormSaisie est affichée en modal (ShowDialog), retourne un DialogResult testé par FormList pour savoir s'il doit y avoir rafraîchissement. Cela évite de passer une instance de FormList à FormSaisie. Autant FormList connaît FormSaisie, autant FormSaisie n'est pas censé connaître FormList...

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 70
    Par défaut
    Bonjour,

    Merci de prendre la peine de me répondre.
    Je vais regarder cette approche, par contre "retourne un DialogResult testé par FormList" comment cela est il possible ? il y a un thread qui tourne en permanence sur le formulaire liste ou bien c le formulaire de saisie qu'il le déclenche ?

    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    C'est le formulaire de saisie qui retourne cette valeur. L'appel à la méthode Form.ShowDialog() est blocant : Msdn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(FormSaisie.ShowDialog() == DialogResult.Ok)
    {
      ...
    }
    Les boutons ont une propriété DialogResult permettant de définir ce retour lors du clic sur le bouton.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 70
    Par défaut
    Merci pour ces précisions !

    Par contre, j'ai une difficulté qui se présente !

    Si dans mon formulaire d'ajout je constate une saisie non valable dans un contrôle et que je souhaite ne pas faire l'enregistrement en bdd et donc, fermer le formulaire pour permettre la correction
    à l'utilisateur de sa saisie comment je fais ?

    j'ai essayé avec la méthode "FormClosing" du formulaire ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                if (dr == DialogResult.OK)
                {
    // ici test de la saisie si elle n'est pas valable e.Cancel = true;
                }
    par contre le code du formulaire liste avec le code ci-dessous

    formProcedureAjout formAjout = new formProcedureAjout();
    if (formAjout.ShowDialog()==DialogResult.OK)
    {
    j'actualise mon dataView

    }
    else
    {
    je ne l'actualise pas
    }

    ne fonctionne plus car il ferme le formulaire ajout

    Est ce que je peux dans le formulaire d'ajout enlever les valeurs ok et cancel à la propriété DialogResult des boutons valider et annuler, le clique sur le bouton valider appel une méthode pour vérifier la saisie et éventuellement enregistrer en bdd et définir la valeur DialogResult à ok avant de fermer. Si la saisie n'est pas valable, affichage d'un message d'erreur et je ne ferme pas ?
    Je sais pas si je suis claire dans mes explications ???

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 70
    Par défaut
    J'ai trouvé ça comme solution :

    j'annule les valeurs DialogResult aux propriétés des deux boutons.
    le bouton "valider", évenement clique j'ajoute le code suivant :

    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
     private void btValider_Click(object sender, EventArgs e)
            {
                //ici test la saisie
     
                if (string.IsNullOrEmpty(tbCategorie.Text))
                {
                    MessageBox.Show("Vous devez saisir une catégorie");
     
                }
                else
                {
     
                    this.DialogResult = DialogResult.OK;
                    MessageBox.Show("la saisie est complète  on enregistre et on ferme");
                    this.Close();
     
     
     
                }
            }
    Mon formulaire liste "obtient" bien une valeur pour dialogResult et je peux donc gérer le rafraichissement du ou des contrôles !

    PS : Cela fait très procédural comme approche par rapport à passer l'instance du form dans le contructeur (méthode initiale) non vous trouvez pas ?

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/07/2013, 14h28
  2. Maximiser un formulaire à partir d'un autre formulaire
    Par samson_02 dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/04/2009, 11h03
  3. Réponses: 7
    Dernier message: 19/01/2009, 23h36
  4. Réponses: 3
    Dernier message: 30/09/2008, 15h49
  5. Réponses: 2
    Dernier message: 09/05/2007, 18h43

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