Reafficher une fenêtre existante (réduite) à partir d'une autre fenêtre. [Résolu]

cs_pouletfrite 5 Messages postés samedi 2 octobre 2004Date d'inscription 30 janvier 2006 Dernière intervention - 30 déc. 2005 à 14:48 - Dernière réponse : cs_pouletfrite 5 Messages postés samedi 2 octobre 2004Date d'inscription 30 janvier 2006 Dernière intervention
- 30 déc. 2005 à 16:10
Bonjour


J'ai un petit problème pour afficher une fenêtre existante à partir d'une autre fenêtre.
En fait j'ai une Form1 form1 avec des textbox que je remplis, je valide donc sa reduit ma Form1 et ça ouvre une Form2
et j'aimerai avoir un bouton sur ma Form2 qui me réouvre mon ancienne Form1 (pour retrouver mes textbox remplis) mais pas une nouvelle Form1.
Donc il fodrait que j'instancie une Form1 déja existante et je sais pas faire (je sais qu'il y a une histoire de paramètres mais j'ai pas reussi).
Merci d'avance si vous pouviez m'aider, ça fait quelques jours que je parcours le forum sans trouver de solutions.
Afficher la suite 

4 réponses

Répondre au sujet
cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention - 30 déc. 2005 à 15:54
+3
Utile
Le but d'une variable public est qu'elle soit visible par d'autres objets (de la même classe ou non). Sinon comme on ferai pour accéder à une variable d'une classe?

Je met un petit bout de code (comme ça, sans tester)

public class Form1 : System.Windows.Forms.Form
{
protected Button btnTest;
public Form1()
{
btnTest = new Button();
//Code de positionnement du boutton
//Association du click avec le gestionnaire ci dessous
this.Constrols.Add(btnTest);
}
private void btnClick(..)
{
Form2 frm2 = new Form2();
//Affectation de la variable
frm2.FrmMain = this;
this.Hide();
frm2.Show();
}

//Rest du code Form1
}

public class Form2 : System.Windows.Forms.Form
{
/* version variable public */
public Form1 FrmMain;
/* Fin version variable public */
/* version propriété */
private Form1 frmMain;
public Form1 FrmMain
{
get
{
return frmMain;
}
set
{
frmMain = value;
}
}
/* Fim version propriété */

//Code Form2
}

public static void main()
{
Application.Run(new Form1());
}

Chris

N'oubliez pas de cloturer votre post.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_69chris
cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention - 30 déc. 2005 à 15:25
0
Utile
Salut,

Effectivement c'est pas très compliqué quand on l'a déjà fait une fois. Tu dois définir une variable "public" (pour l'exemple, je l'appelle frmMain)de type Form1 dans ta classe Form2 (une propriété ou une méthode "SetForm(Form1 frm)" serait mieux). Avant d'afficher une instance de Form2, l'instance de Form1 défini la variable frmMain à this. Ensuite, quand tu veux réafficher cette fenêtre, t'a plus qu'a utiliser la variable frmMain.

Voici grossomodo la technique.
Pour ma part, quand je peux le faire, j'utilise l'affichage modal (méthode ShowDialog) c'est plus clair pour l'utilisateur qui ne voit pas sa fenêtre disparaitre et apparaitre tout le temps.

Chris

N'oubliez pas de cloturer votre post.
Commenter la réponse de cs_69chris
cs_pouletfrite 5 Messages postés samedi 2 octobre 2004Date d'inscription 30 janvier 2006 Dernière intervention - 30 déc. 2005 à 15:40
0
Utile
Tu parle d'une variable frmMain de type Form1 et déclaré dans Form2 et ensuite tu dis de définir frmMain à this (autrment dit ici, this vaut Form1).
Seulement, dans Form1 je n'ai pas accès à frmMain puisqu'elle a été déclarée dans Form2.
PS : Même déclarées en public, les variables d'une forme ne sont pas accessible dans une autre forme, où en tout cas j'ai jamais reussi.
Commenter la réponse de cs_pouletfrite
cs_pouletfrite 5 Messages postés samedi 2 octobre 2004Date d'inscription 30 janvier 2006 Dernière intervention - 30 déc. 2005 à 16:10
0
Utile
Oui bien sur pour la variable public j'avais oublié de la prefixé par la classe donc forcément ...
C'est bon ça marche à peu pres.
Merci beaucoup d'avoir pris du temps pour me répondre.
Bonne fêtes de fin d'année et merci encore ;)
Commenter la réponse de cs_pouletfrite

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.