écouter un event, abonnement d'event

Résolu
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010 - 3 juil. 2009 à 16:21
silverressources Messages postés 6 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 13 octobre 2009 - 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 !!

12 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
6 juil. 2009 à 17:24
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 ! -
3
silverressources Messages postés 6 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 13 octobre 2009
24 août 2009 à 11:13
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++ ;-)
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
6 juil. 2009 à 10:11
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 ! -
0
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
6 juil. 2009 à 16:39
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 ; )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
7 juil. 2009 à 10:28
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 ! ;) 
0
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
7 juil. 2009 à 10:38
*veille technologique

Et également, je m'excuse auprès de Microsoft ! (sauf pour le double clic sur les row du datagrid )
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
7 juil. 2009 à 11:05
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 ! -
0
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
7 juil. 2009 à 11:25
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 ?
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
7 juil. 2009 à 13:55
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 ! -
0
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
7 juil. 2009 à 13:59
arf ^^ tant pis :) je te tiens au courant quand j'en sais davantage ! Enfin quand j'aurais choisis une solution ;)

Merci tt plein krimog !
0
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
24 août 2009 à 12:11
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 ;)
0
silverressources Messages postés 6 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 13 octobre 2009
24 août 2009 à 17:11
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");
0
Rejoignez-nous