Re: CheckedListbox



Hallo Armin,

das Verhalten von Arrays hat sich kaum geändert.

VB6
Dim MyInt() as integer

Redim MyInt(2,5)
Redim MyInt(3,7)

In Net muss ich die Dimensionen vorher festlegen.
Dim MyInt(,) - Verschlechterung?

Das Problem ist ich kann immer nur die letzte Dimension verändern, wenn ich
die Option Preserve verwende.

Jürgen Müller

"Armin Zingler" <az.nospam@xxxxxxxxxx> schrieb im Newsbeitrag
news:#7M1oUQSGHA.4900@xxxxxxxxxxxxxxxxxxxxxxx
"Jürgen Müller" <juergen._mueller@xxxxxxxxxxx> schrieb
Hallo NG,

danke für die schnelle Antwort. Habe die Selektion mit Checked
gleichgesetzt, was für mich auch Sinn machen würde, denn dazu nehme
ich ja so eine Listbox.

Eben nicht. Eine CheckedListbox ist dazu da, mehrere "checken" zu können,
denn sonst genügt ja, wie schon erwähnt wurde, eine Listbox, eine Combobox
oder auch Radiobuttons.

Wenn man möchte, dass der Bunutzer einen
Haken macht (oder mehrere), dann brauche ich auch keine Einfach-
bzw. Mehrfachauswahl mehr. Sei wie es sei.

Bei der Checkedlistbox ist auch nur SelectionMode = One erlaubt. Wobei das
nicht unbedingt sein müsste. Auch in der VS IDE gibt es z.B. beim
Hinzufügen
von Controls zur Toolbox die Möglichkeit, mehrere Einträge zu selektieren
und dann mit einem einzigen Click die selektierten Einträge zu markieren.

By the way, als noch
nicht so langer Benutzer von VB2005 bin ich schon etwas enttäuscht,
dass man zum Beispiel immer noch nicht alle Dimensionen eines Array
dynamisch verändern kann, bei so einem "mächtigen" Frmework 2.0 .
Man muss immer noch zu Fuss hingehen.


Man kann überhaupt keine Dimension eines Arrays verändern. Arrays haben
immer eine feste Größe. Falls du auf Redim Preserve anspielst: Das ist nur
eine Erleichterung, damit man die dabei intern ausgeführten Schritte,
nämlich Anlegen eines neuen Arrays und Kopieren des Inhalts des alten
Arrays
in das neue, nicht selbst ausführen muss. Du solltest Dir im Klaren über
die
interne Speicherung von Arrayelementen sein. Darin ist auch diese
"Limitierung" - die eigentlich eine Erweiterung ist - begründet. Nehmen
wir
als Beispiel ein zweidimensionales Array:

dim a(2,3) as integer

Die Elemente liegen folgendermaßen sequentiell im Speicher:

a(0,0) a(1,0) a(2,0) a(0,1) a(1,1) a(2,1) a(0,2) a(1,2) a(2,2) a(0,3)
a(1,3)
a(2,3)

Es ist nun ein Leichtes, die zweite Dimension um eine Einheit zu
verlängern:

redim preserve a(2,4)

Die dadurch neu entstandenen Elemente können einfach hinten angehängt
werden:

.... a(0,4) a(1,4) a(2,4)

Möchtest Du hingegen die erste Dimension verlängern, dann ist das nicht so
einfach machbar. Es müsste zwischen die vorhandenen Elemente neue
eingefügt
werden:

Redim preserve a(3,3)

a(0,0) a(1,0) a(2,0) *a(3,0)* a(0,1) a(1,1) a(2,1) *a(3,1)* a(0,2) ...

Daher ist das nicht möglich.


Außerdem kann man Arrays von Arrays deklarieren: dim a as integer()()
Hinzu kommt, dass es jede Menge anderer dynamischer Collectionen, wie
Arraylist etc. gibt.


Armin



.