Meilleur auteur de réponses
Afficher les éléments d'une listVieuw

Question
-
Réponses
-
Très bien. Je vais tacher de t'expliquer ça un peu mieux.
J'ai utilisé un objet ListViewItem car il est, tu vas le voir très vite, omniprésent dans ton objet ListView.
Pour commencer, je vais partir d'une de tes lignes commentées : Tu as essayé d'afficher ta variable elementChoisi dans une MessageBox. PTu as donc surement remarqué que le texte qui s'affichait dans ta MessageBox n'était pas simplement ta chaine de caractères. Tu as du obtenir quelque chose dans ce goût là : ListViewItem: {C:\Users\free-template.html}.
Pourquoi ? Tout simplement parce que ton appel à listView1.Items.Add("C:\Users\free-template.html") a IMPLICITEMENT créé un objet ListViewItem. Il a ensuite mis ton texte dans la propriété Text de ce ListViewItem, et enfin, il a ajouté cet objet dans le ListView. Ce qui fait qu'en fait, quand tu appelles SelectedItems[0].ToString(), tu appelles la méthode ToString de ton objet ListView. Cette méthode renvoie une chaine de caractère personnalisée (je n'irai pas plus loin dans le détail, mais si ce sujet t'intéresse, recherche "override ToString()" sur le net, tu devrais trouver des éléments intéressants.)
Donc, sachant cela, pour récupérer ton texte quand tu cliques sur un élément de ta ListView, il te faudra utiliser un code dans ce style (j'omets volontairement les contrôles de validation, genre vérifier qu'on a bien un SelectedItems[0]):
void listView1_Click(object sender, EventArgs e) { string elementChoisi = listView1.SelectedItems[0].Text; //MessageBox.Show(elementChoisi); }
Bien, maintenant que tu sais quel fichier est sélectionné, passant à l'affichage. Je suppose que tu souhaites l'afficher dans un contrôle WebBrowser. Tu peux donc, soit l'ajouter dans ta fenêtre, à côté de ta ListView, soit implémenter une mécanique un peu complexe d'ouverture et de fermeture de fenêtres à la volée.On va pour l'instant considérer que tu es dans le premier cas, le second étant peut-être un peu plus ardu à expliquer et à comprendre.
Donc, tu as un contrôle WebBrowser, nommé webBrowser1. Quand tu cliques sur un élément de ta listView, tu veux changer la source de ce contrôle. Pour ça, c'est très simple : Comme tu sais récupérer le nom du fichier sélectionner grâce au code qui est un peu plus haut, tu as uniquement à naviguer dans ton WebBrowser :
void listView1_Click(object sender, EventArgs e) { string elementChoisi = listView1.SelectedItems[0].Text; webBrowser1.Navigate(elementChoisi); }
Tu parlais tout à l'heure de de faire de l'affichage au moment où ta souris passe au dessus d'un élément. Pour ça, on passera par un autre événement : ItemMouseHover. Dans cet événement, tu as un paramètre "e" qui a un propriété Item, de type ListViewItem. Donc, comme on l'a vu plus haut, tu vas pouvoir récupérer le fichier au dessus duquel est la souris, et naviguer dans ton WebBrowser. Exemple de code :
void listView1_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e) { string elementChoisi = e.Item.Text; webBrowser1.Navigate(elementChoisi); }
Et hop !Est-ce que tout cela te suffit ?
Cordialement,
Sébastien
Sébastien Putier
Consultant - Formateur technologies Microsoft
Blog : http://sputier.wordpress.com
MCTS Développement d'application Windows 4.0 / Data Access 4.0
Si un post vous parait utile, n'oubliez pas de le marquer comme utile. S'il répond à votre question, n'oubliez pas de le marquer comme réponse.- Modifié Sébastien Putier mercredi 1 février 2012 16:44
- Marqué comme réponse SarahChou mercredi 1 février 2012 17:05
- Non marqué comme réponse SarahChou mercredi 1 février 2012 17:08
- Marqué comme réponse Ciprian Duduiala jeudi 2 février 2012 08:06
-
Bonjour Sarah,
oui c'est possible de redimmenssionner un WebBrowser avec les propriétés Width et Height comme ceci:
webBrowser1.Width = 1024; webBrowser1.Height = 768;
Taille en pixel.
fred on youTube
PHP MySQL Web Site Creator
fred- Proposé comme réponse Ciprian Duduiala jeudi 2 février 2012 08:12
- Marqué comme réponse SarahChou jeudi 2 février 2012 08:35
Toutes les réponses
-
Bonjour,
Evidemment, c'est possible. Par contre, si je peux me permettre, fais attention avec ce type d'interface. Si ce n'est pas bien géré, ça peut très très vite devenir particulièrement désagréable pour lui...
Pour en revenir à la technique, une solution consiste à abonner (au chargement par exemple) tous les ListViewItem de ta ListView au même événement MouseOver, et gérer l'affichage de ce que tu veux dans cet événement.
Un truc dans ce goût là, par exemple :
public void LoadListViewItems() { foreach (var fichierHtml in maListeDeFichiersHTML) { ListViewItem listViewItem = new ListViewItem(); //Ici tu mets tout ce que tu veux dans ton ListViewItem listViewItem.MouseOver += ListViewItem_MouseOver; listView.Items.Add(listViewItem); } } private void ListViewItem_MouseOver(object sender, MouseEventArgs e) { //On récupère l'item qui a lancé l'événement ListViewItem item = (ListViewItem) sender; //Maintenant que tu as ton listViewItem, libre à toi d'afficher tout ce que tu veux ! }
Bon courage !Cordialement,
Sébastien
Sébastien Putier
Consultant - Formateur technologies Microsoft
Blog : http://sputier.wordpress.com
MCTS Développement d'application Windows 4.0 / Data Access 4.0
Si un post vous parait utile, n'oubliez pas de le marquer comme utile. S'il répond à votre question, n'oubliez pas de le marquer comme réponse.- Proposé comme réponse Ciprian Duduiala mercredi 1 février 2012 15:54
-
J'aime à rappeler que je suis plus que débutante en c# (c'est peut être pour excuser mes bêtes questions :) )
Merci mais je comprend pas vraiment le but du foreach et tu utilise une listVieuwItem
voila ce que moi je fais pour ajouter mes fichiers dans ma listvieuw.
c'est un code simple mais je m'y retrouve j'avoue que je comprend pas comment tu fais pour que mon elementchoisi s'affiche sur le cotès...
Merci bcp
private void MonTemplate_Load(object sender, EventArgs e) { listView1.Items.Add(@"C:\Users\free-template.html"); listView1.Items.Add(@"C:\Users\index.html"); } private void listView1_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count > 0) { var index = listView1.SelectedItems[0].Index; //MessageBox.Show(index.ToString()); elementChoisi = listView1.SelectedItems[0].ToString(); //MessageBox.Show(elementChoisi); this.Close(); } }
-
Très bien. Je vais tacher de t'expliquer ça un peu mieux.
J'ai utilisé un objet ListViewItem car il est, tu vas le voir très vite, omniprésent dans ton objet ListView.
Pour commencer, je vais partir d'une de tes lignes commentées : Tu as essayé d'afficher ta variable elementChoisi dans une MessageBox. PTu as donc surement remarqué que le texte qui s'affichait dans ta MessageBox n'était pas simplement ta chaine de caractères. Tu as du obtenir quelque chose dans ce goût là : ListViewItem: {C:\Users\free-template.html}.
Pourquoi ? Tout simplement parce que ton appel à listView1.Items.Add("C:\Users\free-template.html") a IMPLICITEMENT créé un objet ListViewItem. Il a ensuite mis ton texte dans la propriété Text de ce ListViewItem, et enfin, il a ajouté cet objet dans le ListView. Ce qui fait qu'en fait, quand tu appelles SelectedItems[0].ToString(), tu appelles la méthode ToString de ton objet ListView. Cette méthode renvoie une chaine de caractère personnalisée (je n'irai pas plus loin dans le détail, mais si ce sujet t'intéresse, recherche "override ToString()" sur le net, tu devrais trouver des éléments intéressants.)
Donc, sachant cela, pour récupérer ton texte quand tu cliques sur un élément de ta ListView, il te faudra utiliser un code dans ce style (j'omets volontairement les contrôles de validation, genre vérifier qu'on a bien un SelectedItems[0]):
void listView1_Click(object sender, EventArgs e) { string elementChoisi = listView1.SelectedItems[0].Text; //MessageBox.Show(elementChoisi); }
Bien, maintenant que tu sais quel fichier est sélectionné, passant à l'affichage. Je suppose que tu souhaites l'afficher dans un contrôle WebBrowser. Tu peux donc, soit l'ajouter dans ta fenêtre, à côté de ta ListView, soit implémenter une mécanique un peu complexe d'ouverture et de fermeture de fenêtres à la volée.On va pour l'instant considérer que tu es dans le premier cas, le second étant peut-être un peu plus ardu à expliquer et à comprendre.
Donc, tu as un contrôle WebBrowser, nommé webBrowser1. Quand tu cliques sur un élément de ta listView, tu veux changer la source de ce contrôle. Pour ça, c'est très simple : Comme tu sais récupérer le nom du fichier sélectionner grâce au code qui est un peu plus haut, tu as uniquement à naviguer dans ton WebBrowser :
void listView1_Click(object sender, EventArgs e) { string elementChoisi = listView1.SelectedItems[0].Text; webBrowser1.Navigate(elementChoisi); }
Tu parlais tout à l'heure de de faire de l'affichage au moment où ta souris passe au dessus d'un élément. Pour ça, on passera par un autre événement : ItemMouseHover. Dans cet événement, tu as un paramètre "e" qui a un propriété Item, de type ListViewItem. Donc, comme on l'a vu plus haut, tu vas pouvoir récupérer le fichier au dessus duquel est la souris, et naviguer dans ton WebBrowser. Exemple de code :
void listView1_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e) { string elementChoisi = e.Item.Text; webBrowser1.Navigate(elementChoisi); }
Et hop !Est-ce que tout cela te suffit ?
Cordialement,
Sébastien
Sébastien Putier
Consultant - Formateur technologies Microsoft
Blog : http://sputier.wordpress.com
MCTS Développement d'application Windows 4.0 / Data Access 4.0
Si un post vous parait utile, n'oubliez pas de le marquer comme utile. S'il répond à votre question, n'oubliez pas de le marquer comme réponse.- Modifié Sébastien Putier mercredi 1 février 2012 16:44
- Marqué comme réponse SarahChou mercredi 1 février 2012 17:05
- Non marqué comme réponse SarahChou mercredi 1 février 2012 17:08
- Marqué comme réponse Ciprian Duduiala jeudi 2 février 2012 08:06
-
-
-
Bonjour Sarah,
oui c'est possible de redimmenssionner un WebBrowser avec les propriétés Width et Height comme ceci:
webBrowser1.Width = 1024; webBrowser1.Height = 768;
Taille en pixel.
fred on youTube
PHP MySQL Web Site Creator
fred- Proposé comme réponse Ciprian Duduiala jeudi 2 février 2012 08:12
- Marqué comme réponse SarahChou jeudi 2 février 2012 08:35
-
Bonjour, Sarah,
Je vous recommande de poster une nouvelle question dans un thread nouvel pour éviter les confusions et pour éviter d’avoir des threads longs et difficiles à suivre.
De toute façon, si vous voulez continuer la discussion sur le même thread et la question initiale a reçu déjà une réponse, svp ne la démarquez pas, pour permettre aux autres personnes avec le même problème de profiter de cette solution. Vous pouvez continuer la discussion même si le thread est marqué comme résolu.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
-
Bonjour,
Pour l'info, la réponse de fred75 ne correspond pas à la question de Sarah. Ce qu'elle souhaite faire, c'est l'inverse ;-) Redimensionner un contenu pour coller au WebBrowser...
Cordialement,
Sébastien
Sébastien Putier
Consultant - Formateur technologies Microsoft
Blog : http://sputier.wordpress.com
MCTS Développement d'application Windows 4.0 / Data Access 4.0
Si un post vous parait utile, n'oubliez pas de le marquer comme utile. S'il répond à votre question, n'oubliez pas de le marquer comme réponse.