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 :

Erreur sur Datagridview, System.IndexOutOfRangeException index -1


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut Erreur sur Datagridview, System.IndexOutOfRangeException index -1
    Bonjour, j'ai un petit soucis assez contraignant.
    J'ai une Datagridview remplie par une liste de mes objets dans la datasource. Mon souci est que lorsque la grid est loadee, si je clique dessus (n'importe ou) elle me renvoie l'erreur suivant, que je n'arrive pas a catche:

    System.IndexOutOfRangeException was unhandled
    Message="Index -1 does not have a value."
    Source="System.Windows.Forms"
    StackTrace:
    at System.Windows.Forms.CurrencyManager.get_Item(Int32 index)
    at System.Windows.Forms.CurrencyManager.get_Current()
    at System.Windows.Forms.DataGridView.DataGridViewDataConnection.OnRowEnter(DataGridViewCellEventArgs e)
    at System.Windows.Forms.DataGridView.OnRowEnter(DataGridViewCell& dataGridViewCell, Int32 columnIndex, Int32 rowIndex, Boolean canCreateNewRow, Boolean validationFailureOccurred)
    at System.Windows.Forms.DataGridView.SetCurrentCellAddressCore(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick)
    at System.Windows.Forms.DataGridView.SetAndSelectCurrentCellAddress(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick, Boolean clearSelection, Boolean forceCurrentCellSelection)
    at System.Windows.Forms.DataGridView.MakeFirstDisplayedCellCurrentCell(Boolean includeNewRow)
    at System.Windows.Forms.DataGridView.OnCellMouseDown(DataGridViewCellMouseEventArgs e)
    at System.Windows.Forms.DataGridView.OnMouseDown(MouseEventArgs e)
    at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.DataGridView.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(ApplicationContext context)
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    at ApplicationTestComponent.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
    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:
    Merci de votre aide

    Julien
    Distillers Road --> Stronger Than Aquarius

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 126
    Points : 94
    Points
    94
    Par défaut
    C'est bon j'ai trouve la solution entre temps.

    Il suffisait de passer ma liste source en BindingList et ca marche nickel
    Distillers Road --> Stronger Than Aquarius

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello,

    Je m'excuse de remonter un sujet vieux de plus de deux ans mais j'aimerais comprendre le pourquoi du comment.

    J'avais plus ou moins le même souci que l'auteur de la discussion et, de fait, en changeant le type d'objet de List(Of T) en IList(Of T), ça marche.

    J'aimerais comprendre pourquoi. J'ai bien tenté la recherche google mais ne sachant pas ce que je cherche, c'est un peu délicat .

    Pour info, voici précisément le bug que je rencontrais :
    Soit une classe Client ayant, entre autre, une propriété Adresses de type List(Of Adresse).

    Je peux affecter la propriété Adresses de la classe Client à la propriété DataSource d'un datagridview sans problème et je pourrai bien visualiser les différentes adresses du client.

    Le bug survient si au départ, la liste est vide et que j'ajoute une nouvelle adresse via l'interface de l'application. L'ajout de l'adresse se passe sans aucun souci. Une fois l'ajout effectuer, si je clique sur la ligne de l'adresse dans le datagridview, j'obtiens l'erreur en question (voir message d'ouverture). Si je clique n'importe où ailleurs que sur cette ligne, aucun problème. De plus, s'il y avait ne fut-ce qu'une adresse "préchargée" dans la liste, aucun souci non plus en ajoutant une nouvelle.

    Bref, je n'y comprends rien du tout.
    Kropernic

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

Discussions similaires

  1. Erreur sur champ text pour un index Full-Text
    Par Steph82 dans le forum Outils
    Réponses: 5
    Dernier message: 06/01/2011, 15h08
  2. Erreur sur la partition systeme, comment réparer ?
    Par Sunsawe dans le forum Windows XP
    Réponses: 11
    Dernier message: 31/07/2007, 19h09
  3. Erreur: System.IndexOutOfRangeException: CVID
    Par Identifiant dans le forum ASP.NET
    Réponses: 4
    Dernier message: 26/06/2007, 16h49
  4. Erreur de compilation sur fichiers systemes
    Par Fabllot dans le forum Visual C++
    Réponses: 2
    Dernier message: 10/02/2007, 02h28
  5. Réponses: 1
    Dernier message: 17/09/2006, 11h45

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