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 :

Selection d'un item dans une listview


Sujet :

Windows Forms

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut Selection d'un item dans une listview
    Bonjour, apres avoir recherché sur les anciens posts je ne trouve toujours pas ou est mon probleme.
    J'ai une listview et je souhaite recuperer l'element sur lequel j'ai cliqué.
    j'ai donc fais ceci, mais le probleme est que la premiere fois ca marche puis la 2eme fois j'ai une erreur...
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private string sRS=string.Empty;
    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
               sRS = listView1.SelectedItems[0].Text;
                btnGoToArchi1_Click(sender, e);//pas tres propre c'est pour mes test (j'envoi la valeur à une deuxieme form
                sRS = string.Empty;
            }
    l'erreur que j'obtiens est la suivante:
    System.ArgumentOutOfRangeException was unhandled
    Message="InvalidArgument=Value of '0' is not valid for 'index'.\r\nParameter name: index"
    Source="System.Windows.Forms"
    ParamName="index"
    StackTrace:
    at System.Windows.Forms.ListView.SelectedListViewItemCollection.get_Item(Int32 index)
    at WindowsFormsApplication1.Form2.listView1_SelectedIndexChanged(Object sender, EventArgs e) in D:\Profile\My Documents\Visual Studio 2008\Projects\Soluce\Soluce\RelanceArchi.cs:line 72
    at System.Windows.Forms.ListView.OnSelectedIndexChanged(EventArgs e)
    at System.Windows.Forms.ListView.WmReflectNotify(Message& m)
    at System.Windows.Forms.ListView.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    at System.Windows.Forms.UnsafeNativeMethods.SendMessage(HandleRef hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
    at System.Windows.Forms.Control.SendMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
    at System.Windows.Forms.Control.ReflectMessageInternal(IntPtr hWnd, Message& m)
    at System.Windows.Forms.Control.WmNotify(Message& m)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.GroupBox.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
    at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
    at System.Windows.Forms.Control.DefWndProc(Message& m)
    at System.Windows.Forms.ListView.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.ListView.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    at System.Windows.Forms.Application.Run(Form mainForm)
    at WindowsFormsApplication1.Program.Main() in D:\Profile\My Documents\Visual Studio 2008\Projects\VersionOpher-ArchiSoluce\ArchiSoluce\Program.cs:line 30
    at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    at System.Threading.ThreadHelper.ThreadStart()
    InnerException:

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Mets un point d'arrêt sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sRS = listView1.SelectedItems[0].Text;
    Parce qu'à tous les coups, la collection "SelectedItems" est parfois vide, et donc SelectedItems[0] pète une exception.
    ಠ_ಠ

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    oui c'est ce que j'ai fait. de toutes les manières je souhaitais que l'evenement soit declencher sur un doucble click, et la c'est ok.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    Il faut que tu rajoutes une condition avant de lancer le traitement de l'événement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (listView1.SelectedItems.Count > 0)
                {
                    sRS = listView1.SelectedItems[0].Text;
                    btnGoToArchi1_Click(sender, e);//pas tres propre c'est pour mes test (j'envoi la valeur à une deuxieme form
                    sRS = string.Empty;
                }
            }
    Ceci est du au fait qu'entre la séléction d'un élément et la séléction d'un autre, il y a un état où aucun n'est séléctionné ==> SelectedItems est vide(Ce qui provoque l'exception)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. item dans une listview personalisé
    Par omarouen dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 29/03/2012, 10h37
  2. Ajouter un item dans une listView
    Par vto59 dans le forum C#
    Réponses: 5
    Dernier message: 04/02/2010, 16h23
  3. selection d'un item dans une ComboBox remplie via WCF
    Par Lazslo dans le forum Silverlight
    Réponses: 0
    Dernier message: 18/11/2008, 20h01
  4. [VB.NET] Suppression d'un item dans une listview
    Par Remedy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/07/2006, 16h00
  5. [C#] Suppression d'un item dans une listview
    Par Popof dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/04/2006, 13h58

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