pb : Modifier un formulaire, par un evenement hors de ce formulaire. - C#/.NET managed - Programmation
Marsh Posté le 26-07-2006 à 14:36:31
tu peux poster ton code stp ?
Marsh Posté le 26-07-2006 à 14:54:59
Voila mon UserControl avec le link, qui doit modifier notre formulaire principal:
Code :
|
Et le formulaire principale :
Code :
|
voila, il y a un Program.cs , qui fait run de FormulairePrincipal.
Marsh Posté le 26-07-2006 à 15:14:41
j'ai mis ton code entre les balises dédiées, c'est plus clair
bon, plusieurs problèmes :
- la déclaration du délegate est mauvaise ligne 3. un delegate destiné à accueillir une callback d'évenement se présente de la façon suivante :
Code :
|
tu as donc oublié le sender en paramètre
- les namespaces : il faut que tes classes soient dans le meme namespace, sinon ton delegate ne sera pas visible (sauf si tu spécifies explicitement le namespace)
- ligne 7 du UserControl : tu as oublié le mot clé "event"
- les fonctions OnEventClick et lAdmin_LinkClicked du usercontrol sont inutiles (et en plus completement fausses). c'est à toi d'envoyer l'évenement une fois que la condition requise est satisfaite. en plus, tu as oublié de créer un objet LinkLabelLinkClickedEventArgs
Code :
|
passons maintenant au formulaire principal :
- ligne 18 : la signature de la fonction est mauvaise :
Code :
|
bref, je t'encourage à lire un tuto sur l'utilisation des delegates et events
Marsh Posté le 26-07-2006 à 16:09:03
Merci pour ton aide deja Harkonnen, il y a encore 2 ou 3 petite chose, qui ne sont pas tres clair pour moi. *noobies rules*
Si je veux recupere le fait qu'une personne est cliquer sur mon lien, et declenche mon event a ce moment là. Si j'ai bien compris comment fonctionne C#, alors je dois creer une methode :
Code :
|
Est ce que je me trompe totalement, et que pour récupere le click sur mon lien je dois faire autrement?
Ou est ce que je dois bien declare ma methode, mais que je ne dois pas mettre mon action a cette endroit?
Et j'ai un autre probleme avec cette ligne :
Code : |
il me dis que LinkLabelLinkClickedEventArgs() ne prends pas d'argument '0'.
Enfin est-ce, comme je suis dans deux namespace different je devrais écrire de cette maniere:
Code : |
Merci, pour tes réponses, et désole quelques fautes avait été rajouté, a cause de mes nombreux tests, qui n'ont aboutit à rien, a part m'embrouiller.
Marsh Posté le 26-07-2006 à 16:27:48
Schum444 a écrit : Merci pour ton aide deja Harkonnen, il y a encore 2 ou 3 petite chose, qui ne sont pas tres clair pour moi. *noobies rules*
|
tu te trompes totalement
tu confonds l'envoi de l'évenement et sa réception. le code que contient ta classe permet d'envoyer l'évenement EventClick aux classes qui y ont souscrit via l'opérateur +=. la signature de cette fonction correspond à une fonction qui reçoit l'évenement, or toi, tu l'envoies. donc tu n'as pas à mettre cet évenement dans une fonction : tu places juste tes 3 lignes de code à la suite de celles où tu détectes que l'utilisateur a cliqué sur le lien.
Schum444 a écrit :
|
ben faut que tu construises ton objet avec les paramètres que tu as défini dans le constructeur de ta classe LinkLabelLinkClickedEventArgs
Schum444 a écrit :
|
non, ton delegate est déclaré dans le namespace, pas dans la classe. là tu rajoutes en plus le nom de la classe.
il faut mettre
Code : |
Marsh Posté le 26-07-2006 à 10:39:23
Voila,
Je souhaite modifier mon formulaire principal, lorsqu'il y a un evenement Click sur un lien d'un menu.
J'ai trouve un tutoriel qui reponds a ma question : http://csharpro.developpez.com/page10.php
Je l'ai suivis, mais j'ai maintenant un probleme lors de l'appel ButtonClick(); il me met que je dois passer par l'expression new.
Je debute en C#, j'ai pas l'habitude des delegates, et je ne vois pas comment resoudre ce probleme. j'ai essaye beaucoup de façon differente pour résoudre mon probleme, et celle là semble etre la meilleur, mais je vois pas comment résoudre ce probleme.
Merci beaucoup de votre aide. Je suis désole si il y a deja eu un post de creer, j'ai visite pas mal de vos page et je n'ai pas trouve de reponse.