System.ArgumentOutOfRangeException: Index non compreso nell'intervallo.
Richiesto valore non negativo e minore della dimensione dell'insieme.
Nome parametro: index.
Lista delle cose che ho provato:
- Ho provato a debuggare il metodo c1TrueDBGrid_MouseDown, ma sembra
che l'inserimento di un breakpoint non permetta il verificarsi
dell'errore;
- Ho inserito nel c1TrueDBGrid_MouseDown il seguente codice:
if (c1TrueDBGrid.Row < 0) c1TrueDBGrid.Row = 0;
ma sembra che c1TrueDBGrid.Row non assuma mai valori negativi.
- Ho inserito nel c1TrueDBGrid_MouseDown la riga
c1TrueDBGrid.Row = c1TrueDBGrid.Row;
per forzare la selezione di una riga, ma non ho avuto successo;
- Ho provato a impostare le proprietà
AllowUpdate = false;
senza successo;
- Sempre nel c1TrueDBGrid_MouseDown , ho provato a controllare la
proprietà SelectedRows.Count, ma sembra che succeda anche quando
SelectedRows.Count == 1;
Qualcuno ha già incontrato un problema simile ?
Grazie
Fabrizio
Non conosco quel componente.
Magari usa le Trace.WriteLine per scrivere un po' di variabili così da
capire cosa stai sbagliando ...
--
Raffaele Rialdi
Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
Fabrizio
Il listato l'hai scritto tu ... :)
Gli inidici della grid, del datasource... eventualmente il bindinmanagerbase
***************** Testo dell'eccezione ***********************
System.ArgumentOutOfRangeException: Index non compreso nell'intervallo.
Richiesto valore non negativo e minore della dimensione dell'insieme.
Nome parametro: index
at System.Collctions.ArrayList.get_Item(Int32 index)
at C1.Win.C1TrueDBGrid.BaseGrid.ViewRowlist.get_Item(Int32 index)
at C1.Win.C1TrueDBGrid.04.DS()
at C1.Win.C1TrueDBGrid.BaseGrid.View.FZ(Point 1MI, Int32 1MJ, Int32
1MK)
at C1.Win.C1TrueDBGrid.BaseGrid.View.GB(Point 1MR)
at C1.Win.C1TrueDBGrid.Split.GB(Point 21P)
at C1.Win.C1TrueDBGrid.BaseGrid.M.NO(Point 1X9)
...
La TrueDBGrid non ha proprietà accessibili quali BaseGrid o 04.
Inoltre, quando l'eccezione viene scatenata, nello stack di chiamate
non appare codice applicativo.
Da queste considerazioni, mi sento di poter affermare con ragionevole
sicurezza che l'eccezione viene scatenata internamente al componente in
conseguenza di un click sulla griglia in particolari condizioni.
Mi aspetto quindi che altre persone abbiano avuto un problema simile
utilizzando lo stesso controllo (almeno lo spero, che poi è la ragione
principale per cui mi sono rivolto al newsgroup).
Grazie
Fabrizio
La deduzione che stai facendo non mi sembra cosě ovvia.
Tu dai in pasto un datasource alla grid e la grid chiama la get_Item(Int32
Index) (che poi č l'indexer della collection del datasource).
L'indice passato č fuori dai limiti e questo puň succedere anche non per
causa della grid (per esempio la collection bacata).
> Da queste considerazioni, mi sento di poter affermare con ragionevole
> sicurezza che l'eccezione viene scatenata internamente al componente
> in conseguenza di un click sulla griglia in particolari condizioni.
Che sia interno č chiaro. Che sia colpa della grid č possibile ma
l'implicazione che stai facendo non č per nulla scontata.
> Mi aspetto quindi che altre persone abbiano avuto un problema simile
> utilizzando lo stesso controllo (almeno lo spero, che poi č la ragione
> principale per cui mi sono rivolto al newsgroup).
Come dicevo all'inizio non uso quella grid, ma se fai altra diagnostica puoi
capire di che si tratta.
Se hai il sorgente della collection fai ovviamente prima. Altrimenti puoi
cominciare a trappare qualche evento della grid che accada subito prima
dell'errore in questione.
A naso direi che alla collection arriva un indice negativo perchč l'item non
č stato selezionato ma č stata cliccata una zona in cui non ci sono item.
Fabrizio Vita
Attendiamo ;-)