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 :

Interdire l'ouverture d'un formulaire déjà ouvert et identique par son contenu


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Par défaut Interdire l'ouverture d'un formulaire déjà ouvert et identique par son contenu
    Bonjour,

    Je travaille sur un programme ou j'ai un datagridview rempli par des données venant de MySql.
    Si je clique sur une cellule d'une ligne de ce datagridview, un formulaire enfant s'ouvre reprenant l'ensemble des données de la ligne du datagridview pour être modifiées et chaque ligne est identifiée par son id.
    Je peux donc ouvrir autant de formulaires qu'il y a de lignes dans le datagridview, jusque là pas de problèmes.
    Le souci c'est que je peux ouvrir plusieurs formulaires pour une même ligne du tableau donc plusieurs formulaires enfants pour un même id.
    Est ce qu'il y a une solution pour empêcher d'ouvrir une deuxième fois un formulaire correspondant à une ligne du datagridview qui a déjà été ouvert ?
    Empêcher l'ouverture d'un deuxième formulaire identique j'ai trouvé mais ce que je veux c'est bloquer un deuxième formulaire qui contient le même identifiant de la ligne du datagridview.
    Je suppose qu'il faut vérifier les identifiants des données de tous les formulaires enfants pour comparer à celui sur lequel je viens de cliquer pour savoir si je peux ou non l'ouvrir... Mais comment faire pour accéder à tous les formulaires pour vérifier puis interdire si besoin ?

    Merci pour votre aide...

    Patrice

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Par défaut
    Maintenir à jour une "List" des identifiants de formulaires ouverts devrait suffire. Il suffirait de vérifier qu'un identifiant donné n'est pas présent dans la liste avant d'autoriser l'ouverture d'un nouveau formulaire.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Citation Envoyé par Krantz Voir le message
    Maintenir à jour une "List" des identifiants de formulaires ouverts devrait suffire. Il suffirait de vérifier qu'un identifiant donné n'est pas présent dans la liste avant d'autoriser l'ouverture d'un nouveau formulaire.
    J'ajouterai que la fenêtre du formulaire doit être responsable de l'insertion et de l'effacement de l'enregistrement dans cette liste d'identifiant.
    La fenêtre contenant la grille ne fait que la lire.

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Par défaut
    Citation Envoyé par Krantz Voir le message
    Maintenir à jour une "List" des identifiants de formulaires ouverts devrait suffire. Il suffirait de vérifier qu'un identifiant donné n'est pas présent dans la liste avant d'autoriser l'ouverture d'un nouveau formulaire.
    Bonjour,

    Merci pour votre réponse... J'ai finalement adopté cette solution avec un messagebox pour avertir que la fenêtre est déjà ouverte. J'aurais voulu pouvoir la mettre en avant si elle a déjà été ouverte plutôt que d'ouvrir un messagebox. Cela aurait été plus sympa.

  5. #5
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Si tu es en WinForms la classe Form possède une méthode Activate() qui doit permettre de la ramener en avant-plan. Il te suffirait de garder quelque part la liste de tes forms en plus des id, par exemple avec un Dictionary et d'appeler cette méthode si la form concernée est présente.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Par défaut
    Citation Envoyé par Noxen Voir le message
    Si tu es en WinForms la classe Form possède une méthode Activate() qui doit permettre de la ramener en avant-plan. Il te suffirait de garder quelque part la liste de tes forms en plus des id, par exemple avec un Dictionary et d'appeler cette méthode si la form concernée est présente.
    Bonne idée ça... Facile de garder les forms dans une liste... Souci c'est comment je récupère la form qui a été créée pour l’insérer dans la liste ? Je génère une Form4 FicheSoin = new Form4 puis je l'ouvre avec show mais cela ne me dit pas comment s'appelle cette nouvelle form. Comment je peux faire ?

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Citation Envoyé par patriceg1473 Voir le message
    Bonne idée ça... Facile de garder les forms dans une liste... Souci c'est comment je récupère la form qui a été créée pour l’insérer dans la liste ? Je génère une Form4 FicheSoin = new Form4 puis je l'ouvre avec show mais cela ne me dit pas comment s'appelle cette nouvelle form. Comment je peux faire ?
    Déclarer un Dictionary<String, Form> où String est ton Id et Form est l'instance d'une fiche

    Puis un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Form form;
    if (dico.ContainsKey(Id))
    {
        form = dico[Id];
    }
    else
    {
        form = new Form4();
        dico.Add(Id, form);
    }
     
    form.Show();

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/04/2013, 09h24
  2. Réponses: 2
    Dernier message: 03/06/2011, 16h38
  3. [AC-2000] Interdire l'ouverture d'un formulaire quand enregistrement null
    Par ROUSSIGNE dans le forum IHM
    Réponses: 1
    Dernier message: 12/11/2009, 17h08
  4. Réponses: 3
    Dernier message: 06/01/2007, 14h56
  5. lecture de son à l'ouverture d'un formulaire
    Par cynferdd dans le forum IHM
    Réponses: 4
    Dernier message: 16/06/2003, 15h31

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