écouter un event, abonnement d'event [Résolu]

Kikuts 162 Messages postés jeudi 11 janvier 2007Date d'inscription 5 novembre 2010 Dernière intervention - 3 juil. 2009 à 16:21 - Dernière réponse : silverressources 6 Messages postés lundi 24 août 2009Date d'inscription 13 octobre 2009 Dernière intervention
- 24 août 2009 à 17:11
Bonjour !

Je n'ai pas beaucoup d'expérience en ce qui concerne les évènements.

Je travaille avec Silverlight 3 depuis qq jours. J'ai une image qui me sert de menu que je map avec des ellipses. Quand je survole ces ellipses, la source de l'image (un rond de la taille de l'ellipse) change.

Cela fonctionne. Simplement, l'évènement clic n'existe pas dans les propriétés de l'ellipse. Silverlight 2 et 3 ne disposant pas d'une grande communauté, je peine à trouver des exemples :/

Donc si quelqu'un pourrait me dire comment faire pour rajouter l'évènement en code c#. Il doit y avoir une ligne genre :

onLoad{
monEllipse.onClickEllipse +=  new onClickEllipse<onClickEllipseEventArgs>(DescriptionDeLaMethodeOnClickEllipse);
}

DescriptionDeLaMethodeOnClickEllipse(object sender, eventargs)

Enfin j'arrive pas :(

Si qq1 qui s'y connait pouvait me donner une leçon, ça serait géniale <3

Merci !!
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 6 juil. 2009 à 17:24
3
Merci
Au fait, dans mon post précédent : "passé" => "basé" (suis un peu fatigué aujourd'hui).

"Changer le nom de la méthode onClick sur les boutons" ? De quoi tu parles ? L'événement s'est toujours appelé Click (Windows Forms / WPF) et s'appelle encore Click.

"Mais les boutons ne peuvent être arrondis comme les rectangles". Tu connais le principe de WPF / Silverlight ? Ils te fournissent les contrôles de base, mais tu peux refaire toi-même le style d'absolument tout. Tu veux un bouton rond qui tourne sur lui-même 24h/24 ?

Et après, tout se fait dans le style. Donc dire que les boutons ne peuvent pas être arrondis, c'est faux. Il faut juste le coder (en gros, tu redéfini un bouton avec ce style comme un rectange à coin arrondis avec un label dessus). Pourquoi ils ne l'ont pas fait de base ? Parce qu'ils ne vont pas s'amuser à faire tous les styles possibles pour chaque élément.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -

Merci krimog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 80 internautes ce mois-ci

Commenter la réponse de krimog
Meilleure réponse
silverressources 6 Messages postés lundi 24 août 2009Date d'inscription 13 octobre 2009 Dernière intervention - 24 août 2009 à 11:13
3
Merci
Salut Kikuts,

Je sais pas si tu en as encore besoin mais voici le code qui te permet le clic sur une ellipse :

//Ajout de l'evenement clic
ellipse.MouseLeftButtonDown += new MouseButtonEventHandler(ellipse_MouseLeftButtonDown);


//evenement
private void ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs args)
{
//On fait disparaitre l'ellipse lors du clic pour tester si l'evenement fonctionne correctement
ellipse.Visibility = Visibility.Collapsed;
}

Voilà, si tu as besoin de quelques sources silverlight 2 & 3, passe sur mon site :

http://silver-ressources.alricaus.com/

J'ai fait quelques exemples pour les shader, les projections 3d, les sprites....

A++ ;-)

Merci silverressources 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 80 internautes ce mois-ci

Commenter la réponse de silverressources
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 6 juil. 2009 à 10:11
0
Merci
Salut

En WPF, tout élément a un événement MouseClick. Comme le Silverlight est passé dessus, peut-être que c'est aussi le cas pour lui.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog
Kikuts 162 Messages postés jeudi 11 janvier 2007Date d'inscription 5 novembre 2010 Dernière intervention - 6 juil. 2009 à 16:39
0
Merci
lol déjà que je suis obligé d'utiliser un timer pour savoir si l'utilisateur fait un double clic sur 1 row de la grid ... Vont pas s'embéter avec un clic ...

Vive microsoft ... Pas penser à mettre un double clic sur un datagrid.row ... Changer le nom de la méthode onClick sur les boutons ... Super coool ! heureusement que SL gère la transparence ... Mais les boutons ne peuvent être arrondis comme les rectangles ... Donc encore une fois c'est du bricolage du dimanche ça ...  ^^
Merci quand même ; )
Commenter la réponse de Kikuts
Kikuts 162 Messages postés jeudi 11 janvier 2007Date d'inscription 5 novembre 2010 Dernière intervention - 7 juil. 2009 à 10:28
0
Merci
Je suis d'accord, mais, pour les boutons, ça aurait été vraiment un grand plus d'ajouter la propriété radiusX et radiusY.

Et un développeur feignant ... c'est courant ;) c'est vrai que je peux redéfinir chaque composant, mais malheureusement, mon chef de projet ne veux pas que je passe des jours à prendre en main la manip juste pour un bouton (je suis étudiant et novice sur silverlight et il y a 4mois, je ne connaissais même pas silverlight et wpf ... quel veille technologie ...lol)

Un lien sympa pour construire un bouton en partant des propriétés du rectangle :
http://www.xaml.fr/silverlight/bouton.html

Faudra que j'essaye un weekend de m'y mettre. Mais dans cet exemple, il ne parle pas des states. En effet, j'avais cru comprendre qu'il existait sous Blend, un endroit qui ressemble un peu à flash (avec image 1, image 2 qui correspondent à onMouseOver, OnMouseOut) j'espère être assez clair ...

Et oui, je me suis tromper : la propriété click existe bien, j'ai simplement fait l'amalgame avec l'évenement "MouseLeftBoutonDown" (comme il existait sur rectangle, ellipse et qu'ils n'avaient pas Click ...)

Excuse moi krimog et merci pour ta réponse ! Se prendre des coups de pieds au cul, ça peut que vous pousser en avant (je te taquine jsais bien que ct pas méchant mais juste une remarque constructif ! ;) 
Commenter la réponse de Kikuts
Kikuts 162 Messages postés jeudi 11 janvier 2007Date d'inscription 5 novembre 2010 Dernière intervention - 7 juil. 2009 à 10:38
0
Merci
*veille technologique

Et également, je m'excuse auprès de Microsoft ! (sauf pour le double clic sur les row du datagrid )
Commenter la réponse de Kikuts
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 7 juil. 2009 à 11:05
0
Merci
Bah c'est vrai que pour le coup, c'est un peu stupide de pas avoir créé l'événement MouseLeftButtonDoubleClick pour les FramworkElement.

Cependant, en ce qui concerne le fait d'ajouter des propriétés RadiusX et RadiusY, ce serait plutôt l'esprit de WinForms : tu peux personnaliser un composant si on te permet de le faire.
Là, le principe c'est de séparer le code de l'interface graphique. Tu crées ton code, tu crées ta fenêtre avec tes boutons tout moches (quoi qu'on a déjà vu plus moche que les boutons de base de Silverlight), et ton programme marche. D'un autre côté, toi, ou un designer, crée les styles et les appliquent à ton interface graphique toute moche (mais qui marchait sans problème) pour en faire une application web toute jolie et qui marche !

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog
Kikuts 162 Messages postés jeudi 11 janvier 2007Date d'inscription 5 novembre 2010 Dernière intervention - 7 juil. 2009 à 11:25
0
Merci
Ok, dans mon rôles d'intégrateur (design et dvlpt ^^) ça veut dire que la création des composants sera une étape obligatoire

Pas un problème ! Et moi je trouve les composants de base plutôt pas mal :) le mouseOver, mouseOut, le clic enfoncé sont géré déjà géré et pourvu qu'on developpe une appli dans les tons bleu et on est content

Bonne journée Krimog ! merci pour tout ! Par ailleurs des fois que tu saches, c'est mieux de se servir de l'isolate storage ou c'est possible de faire comme d'habitude avec l'url : url.xaml'id=4

(pour précision, je n'ai besoin de passer qu'une variable !)

Ca peut paraître bête, mais je ne trouve rien sur le framework de navigation de sl 3 ou bien le passage de valeur entre 2 formulaires sur le net.

Pour plus tard, lorsque j'ai plus d'info à passer entre plusieurs pages, faut il obligatoirement utiliser l'isolate storage de silverligth ? ou existe t il des moyens plus simples à mettre en place ?
Commenter la réponse de Kikuts
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 7 juil. 2009 à 13:55
0
Merci
Ah, là, désolé, mais je ne vais pas pouvoir t'aider. J'ai des connaissances en WPF, mais n'ai que des notions de base en Silverlight.
Or en WPF, on est pas trop du genre se poser ce type de questions ^^

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog
Kikuts 162 Messages postés jeudi 11 janvier 2007Date d'inscription 5 novembre 2010 Dernière intervention - 7 juil. 2009 à 13:59
0
Merci
arf ^^ tant pis :) je te tiens au courant quand j'en sais davantage ! Enfin quand j'aurais choisis une solution ;)

Merci tt plein krimog !
Commenter la réponse de Kikuts
Kikuts 162 Messages postés jeudi 11 janvier 2007Date d'inscription 5 novembre 2010 Dernière intervention - 24 août 2009 à 12:11
0
Merci
Cool j'ai hâte de voir ça ! pour la proj et les sprites.

Pour le clic de l'ellipse, je serai un bien piètre developpeur si au bout de 2 mois je n'avais pas trouver comment faire

Par contre tu pourras peut être m'aider sur 2, 3 points :)

- comment passer "des" variables par URL ? j'arrive avec 1 grâce au NavigationService.Navigate(uri...) mais avec plusieurs variables je n'arrive pas. Donc comment faire autrement si ce n'est pas possible ? J'ai entendu parler d'isolate storage mais ça me semble complexe à mettre en oeuvre :p

- comment scinder un fichier svc : la classe de service qui décrit l'interface IService. Car elle fait déjà 800 lignes ^^ et ça va qu'empirer lol j'ai essayé avec les classe partial mais mon databaseobjetcontext n'est plus visible :( donc mes requêtes linq to sql byebye ^^

une dernière pour la route :D
- comment atteindre la page parente au contentFrame ? j'ai essayé ceci : ((MainPage)this.Parent).hlConnexion.Content (pour modifier le nom du lien connexion en deconnexion)

Voilà ! Par ailleurs, ça peut te donner des idées pour des tuto ou exemples sur ton site :) j'irai le voir ce soir en rentrant du boulot !

Merci tout plein pour ta réponse !! :)

Bon dev ;)
Commenter la réponse de Kikuts
silverressources 6 Messages postés lundi 24 août 2009Date d'inscription 13 octobre 2009 Dernière intervention - 24 août 2009 à 17:11
0
Merci
Sinon pour la page parente je ne sais pas si c'est ce que tu cherche, mais j'ai trouvé ça :
ça permet de modifié un element html selon son id.


HtmlElement element = HtmlPage.Document.Body;
element.SetProperty("innerHTML", "Bonjour
Connexion");

element = HtmlPage.Document.GetElementById("id1");
element.SetProperty("innerHTML", "Deconnexion");
Commenter la réponse de silverressources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.