Conferințe vbstreets - vizualizați subiectul - cum puteți obține date din elementul selectat în listă

Salutări tuturor.
Când scrieți programul de antrenament descris în întrebarea "Citirea datelor din editorul ArrayList", a apărut următoarea întrebare.

Și cât de corect să transferați datele din elementul selectat (selectat) ListView în TextBox?

Modul de umplere, afișare și ștergere a elementelor din ListView este în principiu de înțeles. Iată cum puteți transfera o "linie" cu datele de pe client din ListView în TexBox sau pe etichetă?

dar nu a găsit unul.

Pentru a face casting-ul la recepția datelor din ArrayList este imposibil

Date personale = (Persoon) (lstvKl.SelectedItems);

aici studioul începe să jure cu cuvinte rele. Deși pe ideea ListView, după toate magazinele. Și de ce nu pot să despachetez acest obiect, nu înțeleg.
Încerca să se răsucească atât de liniștit
int index;
index = lstvKl.SelectedIndices;
lblKlantData.Text = lstvKl.Items [index] .SubItems.ToString ();
Din nou, studioul jură la proprietatea SelectedIndices.

Și se ridică întrebarea eternă: Ce ar trebui să fac?

Ramzes
Salutări.
Mulțumesc pentru ajutor, dar
cum este index selectat apoi în elementul ListView?

Ideea ar trebui să fie atât de index = ListView.SelectedIndices;

dar, așa cum am scris deja deasupra studioului, și în acest caz, jură:
„Form1.cs (537): Nu se poate converti în mod implicit de tip 'System.Windows.Forms.ListView.SelectedIndexCollection' la 'int'
"
Asta nu înțeleg. În descrierea acestei proprietăți, se spune că returnează valoarea indicilor elementelor selectate. Dacă este selectat un element, atunci o valoare este returnată.
Deci, ce tip este valoarea returnată? Dacă este apoi să convertiți la int.

În timp ce este încă acolo.

Shl și cea mai ofensivă că la școală, în clasă, nu am făcut așa ceva. Adăugat, șters, sortat pe coloane, a arătat elementele din ListView, dar a citit datele și le-a pus într-un alt control - nu a fost.

Cod: Selectați toate Dim i ca întreg
Pentru i = 0 la ListView.Items.Count-1
Dacă ați selectat ListView.Items
Msgbox ListView.Items # 40; i # 41; .text
MsgBox ListView.Items # 40; .subItems # 40; 2 # 41; .text
Sfârșit Dacă
următor

MSDN a scris (a): Returnează indexurile elementelor selectate în acest control.

[Visual Basic]
Elementele publice selectate de proprietate citite ca _
ListView.SelectedIndexCollection

[C #]
public ListView.SelectedIndexCollection SelectedIndices

[C ++]
public: __property ListView.SelectedIndexCollection *
get_SelectedIndices ();

[JScript]
funcția publică obține SelectedIndices ():
ListView.SelectedIndexCollection;

Valoarea proprietatii
ListView.SelectedIndexCollection conținând indicele elementelor selectate. Dacă în momentul de față nu există astfel de elemente, este returnat un ListView.SelectedIndexCollection gol.

notițe
Atunci când proprietatea MultiSelect este setată la true, această proprietate returnează o colecție care conține indicii tuturor elementelor selectate în ListView. Pentru un ListView în care este permisă numai o singură selecție, această proprietate returnează o colecție de un element care conține indexul elementului selectat unic din ListView. Pentru mai multe informații despre operațiile asupra elementelor din această colecție, consultați ListView.SelectedIndexCollection.

Dacă doriți să obțineți o colecție de elemente selectate pentru controlul ListView, mai degrabă decât pozițiile index pentru astfel de elemente, utilizați proprietatea SelectedItems.

Salutări tuturor.
Ceea ce a sugerat Ramzes în penultimul post arată astfel:
Cod: Selectați toate nule privat lstvKl_SelectedIndexChanged # 40; expeditor obiect, System.EventArgs e # 41;
# 123;
pentru int i = 0; i # 123;
dacă selectați # 41; selectați # 41;
# 123;
lblKlantData.Text = lstvKl.Items # 91; i # 93; .Text + "" + lstvKl.Items # 91; i # 93; .SubItems # 91, 1 # 93; .Text + "" + lstvKl.Items # 91 ; i # 93; .SubItems # 91; # 93 2; .Text + "" + lstvKl.Items # 91; i # 93; .SubItems # 91; # 3 93; .Text + "" + lstvKl.Items # 91 ; i # 93; .SubItems # 91; # 93 4; .Text + "" + lstvKl.Items # 91; i # 93; .SubItems # 91; # 93 5; .Text;
# 125;
# 125;
lstvKl.Visible = false;
# 125;

Ramzes
Faptul că voi (sperăm) ați trecut prin biblioteca pe care am citit-o deja. Și am încercat să o folosesc. Dar, așa cum am scris mai devreme, nu funcționează.
Ce ai sugerat. Dar cum este printr-un singur loc.
Încă nu înțeleg de ce index = ListView.SlectedIndices nu funcționează? La urma urmei, am selectat un element din ListView și folosind această sintaxă ar trebui să obțină indexul acestui element dacă proprietatea MultiSelect nu este setată la true. Ce se întoarce: Index sau colecție de la un index ah?

De modul în care întrebarea în dogonku. Scriu acest cod în manipularea evenimentului ListView_SelectedIndexChanged. Și ce înseamnă cele două argumente ale acestui manager de evenimente? De exemplu, când dăm clic pe un clic, trecem prin indexul e.Colomn al coloanei pe care a fost făcut clic. Și apoi ce?

Articole similare