lefty06
Messages postés9Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention 7 mai 2007
-
6 avril 2007 à 11:19
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 2014
-
6 avril 2007 à 13:29
bonjour,
ma question en suprendra peut etre plus d'un car elle paraitra peut etre idiote.
Mon probleme consiste en une application windows, ma solution contient 2 forms (f1,f2).
f1 fait office de login form qui une fois connecte genere f2 et se cache.
Lorsque je me connecte je desire garder la valeur du "username" et lafficher dans un label sur un label situé sur f2.
f1 : login et mdp, si valide creation de f2 et parser le login sur un label situé ds f2.
f2 dans initialize components initialise son label avec la valeur theoriquement contenu ds fichier de variables globales ou l'on trouve une string declare et initialisé par f1 lors de la connexion reussie.
C ptre un pe confut mais je narrive pas a trouver les mots exacts.
Pour ce faire j'ai voulu creer un module ou plutot une classe dans laquelle je declare mes variables auquelles je peux acceder depuis nimporte kel form le tps que lapplication est en "Run".
Mais ca ne marche pas, lorsque dans f1 ou f2 jimporte le namespace ca ne fonctionne pas?! je ne peux pas acceder a ma variable global?!
Une alternative pour pouvoir faire communiquer les forms les unes avec les autres serait l'usage de delegates mais je ne les matrise que faiblement et un simple fichier on l'on stockerai dans un simple module.
Voila.
Si quelqun aurait un exemple ou quelques explications japprecierai merci.
lefty06
Messages postés9Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention 7 mai 2007 6 avril 2007 à 11:45
J'ai 2 forms dans ma solution c#.
Le but serait de pouvoir faire interargir les 2 forms.
Ceci est possible via des "delegates" ou "evenements delegués" je crois en francais.
Ne matrisant que tres mal cette technique je pensais utiliser des variables globales (public) qui seraient stockées un fichier au sein de la solution. Celles ci seraient alors accessiblent depuis n'importe quel form en theorie.
lefty06
Messages postés9Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention 7 mai 2007 6 avril 2007 à 12:36
Merci ca marche.
Toujours a propos de cette classe Global.
Y aurait il un moyen de faire ceci (le code est erroné):
class static global{
public static string test;
//Comment faire a ce stade svp?, le premier parametre nest pas reconnu comme une variable valide?
public
static
void showForm(System.Windows.Forms form,
bool test)
{
if (test) {
form.show();
}
}
}
Cette procedure que je pourrai appeler depuis n'importe quelle form pour en manipuler une autre:
namespace
WindowsApplication1
{
public
partial
class
Form2 :
Form{
public
Form2()
{
InitializeComponent();
//ceci fonctionne
this.label.text=global.test;
}
private
void
button1_Click(
object
sender,
EventArgs
e){
//Cette form1 existe deja mais son état est form1.hide(); donc je veux la faire reapparaitre depuis la form2
showForm(
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201436 6 avril 2007 à 12:43
je pense que tu mélanges un peu...
dans la classe Global :
class static global{
public static string test
;
//Comment faire a ce stade svp?, le premier parametre nest pas reconnu comme une variable valide?
public static void showForm(System.Windows.Forms.Form form, bool test)
{
if (test) {
form.show();
}
}
}
System.Windows.Forms est un namespace, le type c'est System.Windows.Forms.Form
private
voidbutton1_Click(
objectsender,
EventArgse){
//Cette form1 existe deja mais son état est form1.hide(); donc je veux la faire reapparaitre depuis la form2
showForm(
form1,
true);
}
}
}
attention à bien mettre form1 en minuscule... Form1 est me type.
lefty06
Messages postés9Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention 7 mai 2007 6 avril 2007 à 12:58
//Aucune erreur dans ce fichier
namespace
globalVariables{
public
static
class
global
{
public
static
string
test;
public
static
void
showForm(System.Windows.Forms.
Form
form123,
bool
test){
if
(test) {
form123.Show();
}}}}
Form2:
namespace
WindowsApplication1{
public
partial
class
Form2
:
Form
{
public
Form2(){InitializeComponent();
}
private
void
button1_Click(
object
sender,
EventArgs
e){
//Ne compile pas car Error 1 'WindowsApplication1.Form1' is a 'type' but is used like a 'variable', meme erreur avec 1er parametre ecrit en minuscule?!
lefty06
Messages postés9Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention 7 mai 2007 6 avril 2007 à 13:26
Fantastique, brillant.
J'aurai bien aimé connaitre la demarche pour resoudre le probleme car je ne sais pas quoi ou comment chercher a l'interieur. J'eviterai ansi d'emcombrer le forum avec des question bateau?!
Et ptre un jour je pourrais aider quelqu'un a mon qui sait?! Enfin j'ai le tps
Cela dit merci pour l'astuce, meme si n'est peut etre pas academique comme procédé, ca marche