kikiokiller
Messages postés42Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention31 mai 2009
-
30 mars 2008 à 14:23
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008
-
23 avril 2008 à 16:45
Bonjour à tous,
Ptite question bete surement,
Comment instancier ma form1 (parent) dans form2 (fils) ?
J'ai ecris ceci mais le compilateur me dis qu'il ne connais pas mes textBox du form1 !!!!
c'est mon form2 qui n'est plus instancier correctement dans form1.
Et si j'utilise ta méthode pour faire la meme chose à form1, c'est "program.cs" qui me dis qu'il ne connais plus form1. loool que faire?
J'ai 2 semaine de pratique, dsl d'etre aussi bete :)
ecosmose
Messages postés46Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention30 septembre 2010 30 mars 2008 à 17:29
nan mais on est tous là pour apprendre...et apporter des connaissances pour les uns et les autres..
Le souci que tu rencontre c'est en effet un problème d'enfant Parent...le problème est que ce dernier cas de figure tu souhaites lancé la Form2 comme parent donc ca pose des problèmes (enfin je crois que c'est ce qui se passe)..l'avantage c'est de traiter ce genre de manip depuis la fenetre parente...comme
<hr size= "2" width="100%" />et il faudrait que tu abonnes les evenement de la from2 à une méthode de la Form1 lorsque bien sur tu instancies la Form2 depuis la Form1 comme ceci
Class Form1
{
new Form2();//sans passage de la Form parente
Form2.Move += new EventHandler(Form1.Move_Form2);//ou l'evenement associé à la Form2 que tu désires traiter
De ce fait tu ne traite que les traitements à effectuer sur la Form1 dans la Form1 et ceux de la Form2 que dans la Form2 uniquement quand tel evt se déroule dans la from parent ou enfant..)
BINOME de ECOSMOSE
Association ecologique d'actions de culture et d'Informations
Vous n’avez pas trouvé la réponse que vous recherchez ?
kikiokiller
Messages postés42Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention31 mai 2009 30 mars 2008 à 20:56
Je me suis peut etre mal expliquer:
Form1 est parent
Form2 est enfant
La Form1 est donc la fenetre principale d'ou j'envoie des actions et aussi d'ou je recoie des infos.
Il se trouve que dans mon Form1, j'ai deux textBox qui doivent me renvoyer les coordonnées X et Y de la Form2.
J'écris donc ceci dans ma Form2:
private
void Form2_Move(
object sender,
EventArgs e)
{
int cx =
This.Location.X;
int cy =
This.Location.Y;
form1 .textBox2.Text = cx.ToString();
form1.textBox1.Text = cy.ToString();
cy =
This.Location.Y;
cx =
This.Location.X;
}
Le probleme c'est que form1 est inconnu dans form2. Normale.
Donc ma question était comment instancier d'une maniere simple mon form1 dans form2?
Comme ca, quand mon form2 bougera, il enverra en temps reel les coordonnées sur mes deux textbox qui sont sur ma form1.
D'avance Merci.
ecosmose
Messages postés46Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention30 septembre 2010 30 mars 2008 à 21:07
Relis ce que je t'ai posté et tu verras qu'avec ma solutionj tu n'as pas besoin de gérer les actions de la form1 dans Form2, c'est elle qui gère ses propres actions
d'où
"
De ce fait tu ne traite que les traitements à effectuer
sur la Form1 dans la Form1 et ceux de la Form2 que dans la Form2
uniquement quand tel evt se déroule dans la from parent ou enfant..)
"
BINOME de ECOSMOSE
Association ecologique d'actions de culture et d'Informations
kikiokiller
Messages postés42Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention31 mai 2009 30 mars 2008 à 22:59
Je te remercie pour ces infos, mais je suis débutant et j'aimerais que cantoné au méthode de base et classique pour ne pas m'enbrouiller.
Alors si quelqu'un à une solution simple à cela je vous remercie:
Form1 est parent
Form2 est enfant
La Form1 est donc la fenetre principale d'ou j'envoie des actions et aussi d'ou je recoie des infos.
Il se trouve que dans mon Form1, j'ai deux textBox qui doivent me renvoyer les coordonnées X et Y de la Form2.
J'écris donc ceci dans ma Form2:
private
void Form2_Move(
object sender,
EventArgs e)
{
int cx =
This.Location.X;
int cy =
This.Location.Y;
form1 .textBox2.Text = cx.ToString();
form1.textBox1.Text = cy.ToString();
cy =
This.Location.Y;
cx =
This.Location.X;
}
Le probleme c'est que form1 est inconnu dans form2. Normale.
Donc ma question était comment instancier d'une maniere simple mon form1 dans form2?
Comme ca, quand mon form2 bougera, il enverra en temps reel les coordonnées sur mes deux textbox qui sont sur ma form1.
D'avance Merci.
mais je pense que ma solution de départ est meilleur car elle désolidarise le traitement des forms (et donc réexploitable depuis n'importe quel evenement) et de plus elle est respectueuse de la portée inter classe (et si le Textbox est en privé..tu fais comment ?)
BINOME de ECOSMOSE
Association ecologique d'actions de culture et d'Informations
Miltiades
Messages postés233Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention25 octobre 2010 31 mars 2008 à 11:23
le probleme c'est surtout qu'il y connait rien à la programmation orienté objet et qu'il lache des mots sans savoir ce qu'ils signifient
instancier une classe = CREER une nouvelle instance d'une classe, ou pour simplifier créer une nouvelle variable de cette classe
deuxieme point: si tu veux modifier un controle sur ta porm parente, verifie en premier lieu que ce controle est public, par defaut un controle est privé...
kikiokiller
Messages postés42Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention31 mai 2009 31 mars 2008 à 15:40
Ecoutes loulou je t'aime bien mais pousse pas trop loin.
Je suis peut etre débutant mais mes bouquin de chevet en c# font 1000 pages.
Je sais ce que veut dire "instancier" pour ta gouverne.
Et en me parlant de public et private pour les methodes et les declarations; t'as du me prendre pour un dédé...ou koi?
Je demande simplement une methode simple, méthodique, organisé, structuré et surtout conventionnelle quant à un probleme.
Le souci, c'est que les mecs peuvent pas s'empècher de te sortir un pavé de code.
L'enssentiel suffit...
Bisous loulou Miltiades
oximoron
Messages postés149Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention30 janvier 2009 31 mars 2008 à 18:24
@kikiokiller : Euh faut pas abuser non plus là, tu demandes de l'aide pour ton problème et tu te permet d'être agressif ... Je trouve que ca c'est gonflé "Le souci, c'est que les mecs peuvent pas s'empècher de te sortir un pavé de code. " tu as deux solutions, une que je t'ai proposé, elle marche et c'est simple. Et une autre que ecosmose t'as proposé qui est une facon un peu plus propre que la miènne mais ne sachant pas vraiment le but final de ton code, il est difficile de te donner le code parfait. Il existe plusieurs facon de faire il n'existe pas de technique parfaite, c'est à toi, aidé de tes livres de 1000 pages, pour que tu fasse "une methode simple, méthodique, organisé, structuré et surtout conventionnelle" à partir de tout ce qu'on t'as donné. "L'enssentiel suffit..." ca veut dire donnez moi un bout de code où j'ai juste besoin de faire un copié-collé sans réfléchir ?
Sinon ce que tu demande ca s'apelle Design pattern achêtes toi un autre livre là dessus ca répond à 100% à ce que tu veux.
ecosmose
Messages postés46Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention30 septembre 2010 31 mars 2008 à 19:21
Bin là je suis dégouté de voir comment ce post s'est orienté vers l'agressivité...
et si le Textbox est en privé -> c'était juste pour te faire réfléchire sur la problématique de portée ce qui appuyait mon avis (et non mon ordre) sur l'interdépendance d'une form par rapport à une autre et laissant bien laver son linge sal chacun chez soi, ( traduction : assigner des valeurs aux composants internes à la form et donc privé comme le rappele Miltiades) et juste avoir le sourire quand on va chercher son courier (les evenements qui provoque ces assignations) ..bon je divague mais j'essaye, malgrè toute ta montée d'orgueil, de répondre par l'humour et d'une éclipse légère qui vient obscurcir mon départ , je te laisse méditer sur TES quelques mots...
<hr size="2" width="100%" />2 semaine de pratique, dsl d'etre aussi bete :)
...
j'aimerais que cantoné au méthode de base et classique pour ne pas m'enbrouiller.
......
oui, elle fonctionne mais elle n'est pas conventionnel.
<hr size="2" width="100%" />
Notes aussi l'heure à laquelle je t'ai répondu (31/03/2008 04:05:53) et tu comprendras que ce soir je suis las de constater ta réaction vis à vis de nos conseils qui me semblaient être de bonne sympathie, de motivation (un source rien que pour toi !) et d'une pédagogie conforme (ou conventionnelle selon tes propres mots) à la programmation Orienté Objet...
BINOME de ECOSMOSE
Association ecologique d'actions de culture et d'Informations
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 23 avril 2008 à 16:45
Je suis d'accord, je ne vois pas d'autres manières plus simples pour recuperer le parent qu'en le passant en parametre du constructeur de l'enfant, et d'ecrire dans ton parent une methode public void setTextBoxValues(String text1, String text2)
qui pourra etre appelée par l'enfant.
Si tu crées dans l'enfant une nouvelle instance du parent tu va te retrouver avec deux fenetres parent a mon avis ...