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 :

Acces d un void d une classe depuis un autre classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut Acces d un void d une classe depuis un autre classe
    Bonjour
    Je voulais acceder un Void(Form1) censsé ouvrir un panel (Aussi un user control) depuis une autre classe (Classe Shift user control qui est toujours sur le form1)mais j ai des problemes: car bien que le programme passe le void aucun panel n apparait...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public partial class Form1 : Form
    {
         public  void LoadMypanel()
          {
             mypanel mp = new mypanel();
             mp.Location = new Point(500, 500);
             tabPage1.Controls.Add(mp);
             mp.BringToFront();
     
         }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public partial class Shift : UserControl
    {
     
        public void button1_Click(object sender, EventArgs e)
          {
            Form1 form1 = new Form1();
            form1.LoadMypanel();
         }
     
    }
    Ici le mypanel est user control qui est censé apparaitre au moment ou l on clique sur le bouton du user control de la classe shift
    Mais aucun mypanel ne apparait lorsque l on clique et pourtant si on met des point d'arrets le programme passe bien dans le void
    Merci d avance a vos reponses

  2. #2
    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
    il faut comprendre ce qu'est la Programmation Orientée Objet
    pour chaque classe tu peux avoir plusieurs instances, les forms sont des classes, donc elles peuvent aussi avoir plusieurs instances (ce qui peut etre utile)

    donc quand tu fais form1 = new Form1() tu créés une nouvelle fenetre donc tu n'agis pas sur celle qui est déjà ouverte
    tu ne la vois pas car celle ci n'est pas affichée, mais si tu faisais form1.Show() tu la verrais en plus de l'autre

    si tu veux agir sur l'instance du form existant, il faut avoir une variable qui pointe vers l'instance existante
    (soit la demander dans le constructeur et la stocker, soit la mettre en propriété et la setter)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 913
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 913
    Par défaut
    Bonjour,

    Désigner le formulaire appelant depuis un formulaire appelé, j'ai vu un jour faire ça avec élégance, ça devrait se trouver dans le forum.

    Pour ma part je ne m'embête pas trop, bien que ça semble moins propre.

    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
     
    Form2()
    {
       Form1 F;
     
       public ShowPanel()
       {
           Panel p = new Panel();
           F.Controls.Add(p);
       }
    }
     
    public Form1()
    {
       Form2 frm = new Form2();
       frm.F = this;
       frm.ShowPanel();
    }
    et peut-être encore un F.Controls.Refresh() ou quelque chose du style.

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut Ok
    Citation Envoyé par Pol63 Voir le message
    il faut comprendre ce qu'est la Programmation Orientée Objet
    pour chaque classe tu peux avoir plusieurs instances, les forms sont des classes, donc elles peuvent aussi avoir plusieurs instances (ce qui peut etre utile)

    donc quand tu fais form1 = new Form1() tu créés une nouvelle fenetre donc tu n'agis pas sur celle qui est déjà ouverte
    tu ne la vois pas car celle ci n'est pas affichée, mais si tu faisais form1.Show() tu la verrais en plus de l'autre

    si tu veux agir sur l'instance du form existant, il faut avoir une variable qui pointe vers l'instance existante
    (soit la demander dans le constructeur et la stocker, soit la mettre en propriété et la setter)
    Merci pour vos reponses mais ouioui en faisant un form1.show le mypanel est affiché mais sur un deuxieme Form que je ne trouve pas judicieux, sinon c est comment exactement ce que tu dis sur:
    si tu veux agir sur l'instance du form existant, il faut avoir une variable qui pointe vers l'instance existante
    (soit la demander dans le constructeur et la stocker, soit la mettre en propriété et la setter)

    ezn attendant je cherche la solution aussi
    Je suis un autodidacte en C#
    Merci d'avance
    Hery

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 987
    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 987
    Par défaut
    Ton UserControl appelle une Form.
    Il est donc normal que le Show affiche cette Form.

    D'ordinaire, on a une Form qui contient un UserControl, pas l'inverse.
    Si tu veux afficher tabPage1 dans Shift, il faut que tabPage1 soit aussi dans un UseControl.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 555
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 555
    Par défaut
    si je peux exprimer le besoin autrement (si je l'ai compris): tu as besoin de connaitre la Form contenant un contrôle ? Alors il faut utiliser la propriété Parent du contrôle, qui renvoie le contrôle sur lequel est posé ton 1er contrôle

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut Plus de precision
    En fait ce que je veux j ai 1 form (instance xyz par exemple) qui appelle une autre classe soit disant une form2(instace ABC) apres l operation sur Form2 je voudrai revenir sur l ancien Form1 (Instance xyz) et non créer un autre Form1( avec une autre instance def par exemple)...
    Je ne sais pas si vous avez compris?
    Merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/10/2008, 11h45
  2. Accès aux méthodes privées d'une classe par la reflection
    Par Aurazed dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 07/07/2008, 15h41
  3. acces dynamique aux membres d'une classe
    Par Clorish dans le forum Général Java
    Réponses: 16
    Dernier message: 30/04/2008, 12h43
  4. Problème d'accés a un membre d'une classe
    Par poulette3000 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/07/2007, 17h04
  5. accès a un attribut d'une mdi depuis les forms filles
    Par Taaroa dans le forum Windows Forms
    Réponses: 7
    Dernier message: 27/06/2007, 16h20

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