Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

"Index non compreso nell'intervallo" con True DBGrid

939 views
Skip to first unread message

drago...@yahoo.it

unread,
Jan 16, 2006, 12:00:13 PM1/16/06
to
Buongiorno a tutti.
Ho uno strano problema con la ComponentOne TrueDBGrid. Sto sviluppando
un'applicazione Windows in C# con Visual Studio .NET 2002 e utilizzo la
TrueDBGrid versione 1.3.20044.40922.
Una delle form dell'applicazione ha una griglia con righe raggruppate
per tipologia di elemento.
In situazioni ancora non ben isolate (nel senso che non capita sempre e
quindi risulta difficile replicare l'errore), in cui l'utente clicca su
una colonna per effettuare un ordinamento e poi clicca all'interno
della griglia, viene sollevata l'eccezione:

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

Raffaele Rialdi [MVP]

unread,
Jan 16, 2006, 3:13:51 PM1/16/06
to
> System.ArgumentOutOfRangeException: Index non compreso
> nell'intervallo. Richiesto valore non negativo e minore della
> dimensione dell'insieme. Nome parametro: index.

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

drago...@yahoo.it

unread,
Jan 17, 2006, 3:50:22 AM1/17/06
to
Quali variabili dovrei tracciare in particolare ?
Grazie

Fabrizio

Raffaele Rialdi [MVP]

unread,
Jan 17, 2006, 5:48:33 AM1/17/06
to
drago...@yahoo.it wrote:
> Quali variabili dovrei tracciare in particolare ?
> Grazie

Il listato l'hai scritto tu ... :)
Gli inidici della grid, del datasource... eventualmente il bindinmanagerbase

Dragoncino

unread,
Jan 17, 2006, 7:22:56 AM1/17/06
to
Purtroppo non è esattamente così: il modulo che include la griglia è
stato scritto più di un anno fa da un programmatore che ora non c'è
più ... :)
In ogni caso, per quanto ho potuto vedere, questa eccezione viene
generata internamente al componente, non nel codice scritto da noi.
Infatti, nel testo completo dell'eccezione, appare:

***************** 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

Raffaele Rialdi [MVP]

unread,
Jan 17, 2006, 9:27:16 AM1/17/06
to
Dragoncino wrote:
> Purtroppo non č esattamente cosě: il modulo che include la griglia č
> stato scritto piů di un anno fa da un programmatore che ora non c'č
> piů ... :)

> In ogni caso, per quanto ho potuto vedere, questa eccezione viene
> generata internamente al componente, non nel codice scritto da noi.
> Infatti, nel testo completo dell'eccezione, appare:
[...]

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.

Dragoncino

unread,
Jan 19, 2006, 4:21:22 AM1/19/06
to
Ho provato a indagare sulla base delle indicazioni che mi hai dati, ma
ancora non sono arrivato a nessuna conclusione, soprattutto per il
fatto che non abbiamo ancora capito esattamente in quali condizioni
viene lanciata l'eccezione. Ho inviato anche richiesta al produttore
della grid, attendo risposta.
Comunque farò sapere a te e al newsgroup se riusciremo a risolvere il
problema.
Grazie e a presto.

Fabrizio Vita

Raffaele Rialdi [MVP]

unread,
Jan 19, 2006, 2:34:29 PM1/19/06
to

Attendiamo ;-)

0 new messages