IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] ListView + gestion de System.OutofRangeException [Débutant(e)]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut [C#] ListView + gestion de System.OutofRangeException
    Bonsoir,

    Comme indiqué dans le titre du message j'ai un souci avec un controle listview.
    Je n'ai pas pu le préciser dans le titre mais c'est posé sur un winform.

    Bref, tout ne bas de mon listview j'ai une ligne qui n'est pas remplit.
    Sur ce meme listview j'ai un Evenment MouseUp qui me sert à afficher un controle ContextMenu (ce n'est peut etre pas la meilleur methode me direz vous).

    Et come on peut s'y attendre je tente de récupérer la propriete Tag de mon item sur un 'SelectedListViewItemCollection' qui n'existe pas !

    A ce moment la apparait mon erreur OutofRangeException.

    Pour y palier j'ai quand meme pu utiliser System.Exception.
    Mais, et c'est là que sa me gave, c'est ULTRA LENT.
    Sa bloque pendant bien deux trois secondes....

    Donc en fait j'aurais voulu savoir si il n'existait pas un gestionnaire d'erreur à utiliser dans ces cas la que je n'aurais pas encore trouvé ?

    Ou bien est ce que je devait écrire mon affichage du controle ContextMenu differement.

    Pour ce cas la je vous poste mon code à ce sujet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     
    namespaces superToto
     
    Class toto{
    .....
    	private void InitializeComponent()
    	{
    	   ......
    	   this.listView.MouseUp +=new MouseEventHandler(OnRightClickListview);
    	   ......
    	}
    ....
    		private void OnRightClickListview(object sender,MouseEventArgs e)
    		{
    			if(e.Button == MouseButtons.Right)
    			{
    				ListView.SelectedListViewItemCollection t = ((ListView) sender).SelectedItems;
    				try
    				{
    					MessageBox.Show(t[0].Tag.ToString());
    					this.MonMenuContextuel.Popup += new EventHandler(OnPopupMonMenu);
    					((ListView) sender).ContextMenu = this.MonMenuContextuel;
    				}
    				catch(System.Exception y)
    				{
    					this.MonMenuContextuel.Popup -= new EventHandler(OnPopupMonMenu);
    					((ListView) sender).ContextMenu = null;
    					MessageBox.Show(y.Message);
    				}
    			}
    		}
    		private void OnPopupMonMenu(object sender,System.EventArgs e)
    		{
    			this.MonMenuContextuel.MenuItems.Clear();
    			MenuItem menuItem1 = new MenuItem("&Copy");
    			MenuItem menuItem2 = new MenuItem("&Find and Replace");
    			if(this.MonMenuContextuel.SourceControl == this.listView)
    			{
    				// Add MenuItems to display for the TextBox.
    				MonMenuContextuel.MenuItems.Add(menuItem1);
    				MonMenuContextuel.MenuItems.Add(menuItem2);
    			}			
    		}
    ....
    }
    Tout début de réponse ou ce que vous voulez sera le bienvenue

    Bize et bonne soirée,

    epox

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 83
    Par défaut
    Bonjour et bienvenue,

    Il me semble que tu dois d'abord tester si tu a un élément de sélectionner
    avant de faire ton traitement

    Tu peux essayer de faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
          private void OnRightClickListview(object sender,MouseEventArgs e) 
          { 
                    if (this.TonListView.SelectedItems.Count == 0) return;
                    if(e.Button == MouseButtons.Right) 
                   { 
                            suite de ton code ..............;
     
           }

  3. #3
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Ok, je vais essayer ca ce soir, je te dirais ce qu'il en est !

    Merci bien en tout cas :)

Discussions similaires

  1. Gestion de systeme de fiches
    Par mailoy dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 10/06/2013, 23h23
  2. Programme de gestion de systeme de fiches
    Par mailoy dans le forum C++
    Réponses: 6
    Dernier message: 10/06/2013, 23h18
  3. Remplacer listView par autre systeme aussi simple
    Par AmauryLondon dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/02/2013, 12h12
  4. un control de gestion de systeme windows toute faite
    Par infostars dans le forum ASP.NET
    Réponses: 0
    Dernier message: 04/02/2009, 12h02
  5. Listview gestion d'icones
    Par frizou11 dans le forum Windows
    Réponses: 1
    Dernier message: 23/10/2007, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo