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 :

accès à un bouton d'un autre form


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut accès à un bouton d'un autre form
    Bonjour à tous,

    Voila mon problème, j'aimerais accéder à un bouton qui se trouve dans un autre form. Mais je n'y arrive pas...

    Comment procéder?

    Merci d'avance.

  2. #2
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Accéder au bouton lui même ? (pour par exemple changer son texte etc ..)
    Ou accéder a un événement du bouton ? (par exemple le click ?)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut
    Je désactive le bouton dans le load de son propre form et j'aimerais le réactiver quand je clic sur OK dans un autre form. La technique que je vaut faire n'est peut être pas la bonne...

  4. #4
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Question intéressante en fait je trouve
    Tout dépend un peu de comment se passe ton application.
    Tu peux m'éclairer ?

    Tu as une Form1 avec un bouton désactivé.
    Une Form2 qui voudrait réactivé ce bouton a partir de l événement d'un de ces boutons, ça je crois avoir compris.

    Ta Form2, elle est lancée à partir de ta Form1 ?
    avec Show() ? ShowDialog() ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut
    Dans le load de mon form 1 les bouton sont désactivé si le fichier n'existe pas.

    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
    21
    22
    23
    24
    private void Form1_Load(object sender, EventArgs e)
            {
                string Dossier = Application.StartupPath;
                string Chemin = System.IO.Path.Combine(Dossier, fichier.FichierJoueurs);
     
                MessageBox.Show(Chemin);
     
     
                if (System.IO.File.Exists(Chemin))
                {
                    bChargerJoueur.Enabled = true;
                    bChoixJoueur.Enabled = true;
                    bCommencerPartie.Enabled = true;
                    bNewPerso.Enabled = true;
                }
                else
                {
                    bChargerJoueur.Enabled=false;
                    bChoixJoueur.Enabled = false;
                    bCommencerPartie.Enabled = false;
                    bNewPerso.Enabled = false;
                }
     
            }
    J'appelle le form 2 comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void bNewPerso_Click(object sender, EventArgs e)
            {
                New_Perso p2 = new New_Perso();
                p2.Show();
            }
    Dans le form 2 je crée mon fichier et je met un joueur dedans lorsque je clic sur OK.

    J'aimerais que quand je clic sur Ok il réactive mes boutons.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bChargerJoueur.Enabled = true;
                    bChoixJoueur.Enabled = true;
                    bCommencerPartie.Enabled = true;
                    bNewPerso.Enabled = true;
    J'espère avoir été clair

  6. #6
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Oui, je vois.
    Alors il faut que ta Form2 connaisse ta Form1.

    Pour ça, la manière la plus simple c'est de passer ta Form1 en paramètre au constructeur de ta Form2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private void bNewPerso_Click(object sender, EventArgs e)
            {
                New_Perso p2 = new New_Perso(this);
                p2.Show();
            }
    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
     
    public partial class New_Perso : Form
        {
            Form1 Parent;
            public New_Perso(Form1 f)
            {
                InitializeComponent();
                Parent = f;
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Parent.button2.Enabled = true;
            }
        }
    Tu vois donc que dans l'événement button1_Click de ma forme2, je réactive le bouton de ma Form1. Seulement, par défaut, les boutons sont private. Si tu veux pouvoir y accéder comme dans l'exemple il faut que tu mettes le bouton à réactiver en public (à changer dans le fichier Form1.Designer.cs)

    En procédant de la sorte, ça va fonctionner.
    Seulement, je suis pas sur que ça soit très "propre" et la sur le coup, je vois pas d'autre moyen. Peut-être quelqu'un qui passera par ce topic trouvera une meilleure solution
    De plus, je suis pas partisan de l'utilisation de show() au lieu de showDialog() sauf si c'est vraiment nécessaire. Est-ce le cas dans ton application ?

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

Discussions similaires

  1. [Débutant] Exécution du code d’un bouton dans un autre form
    Par hassane03 dans le forum VB.NET
    Réponses: 4
    Dernier message: 02/02/2013, 20h24
  2. Réponses: 6
    Dernier message: 21/04/2011, 15h03
  3. Réponses: 0
    Dernier message: 21/04/2011, 13h23
  4. Réponses: 6
    Dernier message: 09/10/2010, 23h07
  5. effectuer un test sur un bouton d'un autre form
    Par a.sana dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/06/2009, 22h08

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