Appel methode static impossible ? [Resolu][C#.NET] - C#/.NET managed - Programmation
Marsh Posté le 17-08-2006 à 09:42:06
Dans mainForm:
Code :
|
"fenetre" est un dataGridView dans mainform
Dans optionsForm:
Code :
|
Marsh Posté le 17-08-2006 à 09:42:39
Code :
|
Marsh Posté le 17-08-2006 à 09:44:57
_darkalt3_ a écrit :
|
Hm non,
"The namespace alias qualifier "::" always resolves to a type or namespace so is illegal here. Consider using ".2 instead
Marsh Posté le 17-08-2006 à 09:57:13
Ca m'avance paaaaaaaaaaaaaaaaaaaaaas
Je précise que mainForm et optionsForm sont chacun une "partial class".
Marsh Posté le 17-08-2006 à 10:05:18
C'est à dire que c'est un peu bizarre de pas pouvoir appeler une méthode statique..., surtout quand on a qu'une composition ou aggrégation comme ca semble être le cas.
Tu peux en mettre plus ou en dire plus ?
Marsh Posté le 17-08-2006 à 10:11:19
Euh en fait j'ai un doute:
tu mets le static juste pour tenter à ce que cela fonctionne ?
Parce que si t'es pas dans un contexte de statiques, ca va poser problemes.
Marsh Posté le 17-08-2006 à 10:12:53
Hm l'erreur vient de la form1: quand je passe la fonction en static, il me dit l'erreur d'en haut (reference machin) en montrant sur "fenetre"
Marsh Posté le 17-08-2006 à 10:16:46
ReplyMarsh Posté le 17-08-2006 à 10:20:08
Pour pouvoir l'appeller de la optionsForm ! Le public ne suffit pas, aparamment... En fait, le but de la manoeuvre:
Dans mon application principale, il y a un bouton options. Alors jai fait une nuovelle form pour faire afficher une fenetre d'options. Mais dans ces options, on peut regler un chemin de dossier qui affectera la mainForm. Donc il faut que de la, je puisse appeller une fonction de mainForm. Suis-je plus clair ?
Marsh Posté le 17-08-2006 à 10:22:41
ParadoX a écrit : Pour pouvoir l'appeller de la optionsForm ! Le public ne suffit pas, aparamment... |
Ce n'est pas static qui aide à ce genre de choses !
ParadoX a écrit : En fait, le but de la manoeuvre: |
Oui, mais c'est un probleme de design que tu as.
Pour arriver à tes fins, il faut que tu passes, par exemple à sa construction, à ta form d'options une référence vers ta mainform. Ensuite, tu pourras appeler ta fonction update, qui n'a à priori pas à être statique.
Marsh Posté le 17-08-2006 à 10:26:00
OK merci, c'est résolu !
Marsh Posté le 17-08-2006 à 10:32:23
Ben c'est pas très compliqué:
Le schéma de ta class option (:
Code :
|
Et a l'instanciation de ta form d'option quelque part dans ta mainform :
Code :
|
Et hop.
Marsh Posté le 17-08-2006 à 10:32:40
ReplyMarsh Posté le 17-08-2006 à 10:33:27
Donc t'as bien capté qu'on met pas de static par hasard juste pour que ca "fonctionne" ?
Marsh Posté le 17-08-2006 à 10:37:25
Jep
Désolé pour le grillage
Sinon, jai laissé en static une variable "cheminDuRepertoire", que l'on peut changer dans les options, et qui est utilisé dans la mainForm. C'est bien ca, l'utilité du static ? Qu'on puisse utiliser une fonction / variable commune a toutes
Marsh Posté le 17-08-2006 à 10:45:13
ReplyMarsh Posté le 17-08-2006 à 23:10:52
Si tu veux pouvoir exécuter ta fonction sans instancier un objet de la classe , à ce moment là il faut un static.
Si par contre, il est abbérant d'utiliser cette fonction sans utiliser une instance précise -> pas static
edit : en gros, même chose pour les fonctions + peut servir pour avoir un variable commune à toutes les instances de la classe
Marsh Posté le 18-08-2006 à 09:36:52
voire une instance unique d'une classe sur un modèle singleton ...
Marsh Posté le 18-08-2006 à 12:39:56
Reply
Marsh Posté le 17-08-2006 à 09:24:29
Bonjour,
J'ai 2 form:
MainForm et OptionForm
Dans MainForm, j'ai une methode public void update() sans parametres qui update un composant appellé fenetre (le nom est codé en dur dans la fonction.) Tout marche très bien dans cette form.
Maintenant, quand j'essaye d'appeller update a partir de l'autre form, il ne me propose pas la fonction, et si je la mets en static, il me dit "An object reference is required for the nonstatic field, method or proprtey "monProjet.mainForm.fenetre"
Pourquoi ?
EDIT: Peut on déclarer des fonctions ou classes Friend, comme en c++ ?
Message édité par ParadoX le 17-08-2006 à 10:31:37
---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt