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.
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.
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 ?)
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...
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() ?
Dans le load de mon form 1 les bouton sont désactivé si le fichier n'existe pas.
J'appelle le form 2 comme ceci:
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; } }
Dans le form 2 je crée mon fichier et je met un joueur dedans lorsque je clic sur OK.
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(); }
J'aimerais que quand je clic sur Ok il réactive mes boutons.
J'espère avoir été clair
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;![]()
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(); }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)
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; } }
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 ?
Partager