Probleme en C#: Ouvrir une Form a partir d'un bouton d'une autre Form - C#/.NET managed - Programmation
Marsh Posté le 06-01-2006 à 23:14:44
l'erreur CS0103 provient du fait que tu n'as instancié aucun objet BoiteDialog dans ta fonction OnPaint. en plus, ta variable NbIteration, tu la sors d'ou ? ta classe BoiteDialog ne contient aucune propriété nommée NbIteration.
en plus, tu as oublié l'accolade fermante de OnPaint() (ou alors c'est une erreur de copy/paste)
l'erreur CS0246 peut avoir 2 causes possibles :
- ta classe BoiteDialog est définie dans une assembly séparée, auquel cas tu dois la rajouter en référence,
- ta classe BoiteDialog est définie dans un namespace différent, ce qui ne semble pas être le cas puisque tes 2 classes sont dans le même namespace (JeuxDuChaos). poste éventuellement une capture d'écran de ton explorateur de solutions, avec les différentes classes et namespaces
Marsh Posté le 06-01-2006 à 23:47:51
oui l'accolade est une erreur de copy/paste je pense, j'ai essayé de copier que le code qui peut etre etait interessant pour ce post c'est pr ca.
Pour NbIteration je l'ai définie en tant que int dans la fonction button_Click(....) tout en bas de ma class BoiteDialog.
l'erreur CS0103 : J'ai crée l'instance BoiteDialog dans la fonction menuItem2_Click(object sender, System.EventArgs e)
c'est pas correct?
pour l'erreur CS0246 :
Effectivement au debut j'avais pas le meme namespace. J'ai juste changé le namespace dans Form1.cs et me suis assuré que ces deux fichier etaient bien dans le meme dossier du meme nom que ce namesapce a savoir JeuxDuChaos.
Ca suffit ? ou j'ai oublié un truc ?
Pour l'explorateur de solution , bah je n'ai pas visual studio chez moi, la j'essaie ca sous un editeur de texte.
Marsh Posté le 07-01-2006 à 00:11:48
pulsar07 a écrit : |
euh... tout ce que tu as défini, c'est une variable locale à la fonction button_Click() qui "meurt" à la fin de cette fonction, et qui n'est pas du tout exposée au monde extérieur !
tu as déjà entendu parler des variables membres et des propriétés (get/set) ? parce que là, ce que tu fais, c'est n'importe quoi !
si tu veux utiliser ta variable NbIteration dans une autre classe, soit tu la déclares comme variable membre publique de ta classe BoiteDialog (crade), soit tu la déclares en private et tu l'exposes via les accesseurs get/set (bien plus propre). mais la déclarer à l'intérieur d'une méthode comme tu le fais, c'est n'importe quoi.
pulsar07 a écrit : |
non, tu n'as rien créé du tout ! tu as appris les concepts de base de la POO, ou tu programmes à l'aveuglette ? parce que ce que tu as fait, c'est n'importe quoi :
Code :
|
ce code aurait pu marcher si tu avais déclaré la variable NbIteration comme membre static de ta classe BoiteDialog, ce qui n'est pas le cas.
il faut instancier un objet de type BoiteDialog avec new, comme tu le fais dans ta fonction menuItem2_Click(), mais ne le fais pas dans le OnPaint, mais directement dans le constructeur de la classe, sinon je te dis pas l'état de la mémoire, qui va finir par arriver à saturation à force de créer des BoiteDialog à chaque WM_PAINT
pulsar07 a écrit : |
tu compiles comment ? donne la ligne de commande que tu utilises
bref, il te manque pas mal de bases en OO, y'a du boulot
Marsh Posté le 07-01-2006 à 00:25:35
lol, oui je debute si on peut dire .
je compile sous Scite(un editeur) , mais la commande c'est celle la derriere:
csc Form1.cs
Marsh Posté le 07-01-2006 à 00:34:24
pulsar07 a écrit : |
et le fichier BoiteDialog.cs, il compte pour du beurre ?
et tu t'étonnes d'avoir une référence manquante ?
csc Form1.cs BoiteDialog.cs
ça devrait aller beaucoup mieux comme ça
Marsh Posté le 07-01-2006 à 16:29:28
C'est bon ca marche !!
Merci bien.
J'ai fait dans la version "crade" comme tu dis en déclarant en tant que static public ma variable NbIteration.
Je connais pas get/set alors je vais essayer de voir coment ca marche.
thx
Marsh Posté le 07-01-2006 à 16:42:54
pourquoi utilisé un tel éditeur quand il y a un editeur comme VISUAL STUDIO qui fait kazi tout automatiquement (malheureusement)? pour débuter c'est l'idéal je trouve. Car parfois il y a moyen de faire des trucs et ça pond le code tout seul (dommage aussi)...
Marsh Posté le 09-01-2006 à 12:18:54
Ptet pask'il y a des gens qui n'ont pas 500 euros à dépenser dans un éditeur...
Marsh Posté le 09-01-2006 à 13:12:45
Reply
Marsh Posté le 06-01-2006 à 22:39:46
Alors voila:
J'ai un fichier Form1.cs dans lequel est défini ma class Form1 : Form qui me permet d'afficher une fenetre de type applicationwindows.
Dans cette fenetre je crée un menu avec un menuitem nommé menuItem2.
Je voudrai une fois avoir cliqué sur cet item qu'il affiche une boite de dialog.
Pour cela j'ai crée une autre classe dans un autre fichier nommé BoiteDialog.cs dans le quel se trouve ma class BoiteDialog : Form
Ces 2 fichiers se trouvent dans le meme dossier. Mais je n'arrive pas , j'ai des erreurs de compilation.
C'est certainement pas grand chose mais je vois pas.
Si qq'un peux m'aider .
Voila mes erreur de compilation au niveau du fichier Form1 .cs
Form1.cs(72,8): error CS0103: The name 'BoiteDialog' does not exist in the current context
Form1.cs(78,9): error CS0103: The name 'BoiteDialog' does not exist in the current context
Form1.cs(91,4): error CS0246: The type or namespace name 'BoiteDialog' could not be found (are you missing a using directive or an assembly reference?)
Form1.cs(91,24): error CS0246: The type or namespace name 'BoiteDialog' could not be found (are you missing a using directive or an assembly reference?)
----------------------
Code Form1.cs :
----------------------
----------------------
Code BoiteDialog.cs :
----------------------
Message édité par pulsar07 le 06-01-2006 à 22:41:47