Fig.1. Proiect de decizie
Paragraful 1. Lucrul cu liste din lista
1.1. Proprietăți principale din lista
Am pus pe formularul de control listă și ia în considerare proprietățile sale.
Ca și înainte, aici vom lua în considerare numai proprietăți care nu au fost menționate în secțiunile anterioare sau pe care nu le avem în controalele pe care le-am folosit înainte.
Proprietățile DataSource, DisplayMember și ValueMember specifică numele tabelului sau matricei ale cărui câmpuri și valori sunt afișate în listă atunci când lucrează cu bazele de date. De exemplu, ComboBox poate fi completat folosind nu numai metoda Add, ci și proprietățile DataSource, DisplayMember și ValueMember. Detalii despre acest lucru vor fi discutate la examinarea problemelor legate de lucrul cu bazele de date. Sursa de date poate fi utilizată atunci când se încarcă o listă din matrice.
Proprietatea HorizontalExtent stabilește lățimea în pixeli pentru bara de derulare la valoarea corectă a barei orizontale. Dacă lățimea listei este mai mică decât valoarea acestei proprietăți, bara de derulare orizontală este activată. Dacă lățimea unui ListBox este egală cu sau mai mare decât această valoare, bara orizontală de defilare este ascunsă.
Proprietatea IntegralHeight vă permite să setați dimensiunea verticală a listei. Dacă valoarea sa este adevărată, atunci dimensiunea verticală este un număr multiplu de elemente afișate și nu va afișa elemente listate parțial în fereastră.
Proprietatea ItemHeight vă permite să specificați dimensiunea verticală a elementului de listă.
proprietate multicoloana vă permite să plasați o listă de elemente în mai multe coloane, numărul de care variază în funcție de numărul de coloane de elemente, dar elementele de ieșire pentru fereastra verticală nu se produce la frontieră (ca rezultat - nu poate fi defilare verticală).
Proprietatea SelectionMode definește modul selectiv de selecție a rândului și poate avea următoarele valori:MultiExtended - mai multe elemente din listă pot fi evidențiate, în codul anterior 3, utilizatorul poate accesa Shift, Cntrl și săgeți pentru a selecta.
Rețineți că atunci când selectați indexul elementului selectat în modurile MultiSimple și MultiExtend, indicele nu corespunde cu ordinea selectării liniilor, ci numai cu ordinea din listă. Dacă se adaugă următoarele linii la codul anterior, în ciuda faptului că indicii pentru ieșire sunt schimbate - ieșirea rândurilor va fi în continuare secvențială (meniul View / Output).
Proprietatea Sorted vă permite să sortați lista, de exemplu:
afișează lista în formularul:
Proprietatea UseTabStop afișează capacitatea de a utiliza filele din elementele de listă.
Numerele opțiunilor sunt separate de cuvântul "Opțiune" la o distanță definită de tabulare atunci când listBox1.UseTabStops = true; și va fi afișat fuzionat cu cuvântul, iar caracterul tab propriu-zis ca necitit, cu listBox1.UseTabStops = false.
1.2. Operațiuni pe listele ListBox
Și astfel, pentru proiectul proiectului, adăugăm (dacă nu este deja făcut) controlul ListBox, setându-i dimensiunile și proprietățile în conformitate cu descrierea de mai sus. Puteți să lăsați și să acceptați în mod implicit, deoarece acestea nu afectează exemplele care vor fi date mai jos. Proprietatea SelectionMode este setată în MultiExtend, vom selecta dimensiunile și aplicația este pregătită pentru experimente.
Proprietatea principală a ListBox-ului este proprietatea Items. Este pur și simplu o colecție de obiecte tip șir, adică Proprietatea ListBox.Items este de tip ListBox.ObjectCollection.
1.2.1. Adăugarea rândurilor în lista
Pentru a seta proprietatea Items la etapa de proiectare, faceți clic pe elipsa de lângă ea în fereastra Properties (Proprietăți) și, prin urmare, apelați editorul String Collection. În acesta, puteți introduce textele de șir necesare, care după ce faceți clic pe butonul "OK" apar în fereastra de control.
Pentru a adăuga linii programat, puteți folosi metoda Adăugare (folosită deja de noi de mai sus).
Pentru a arăta cum este posibilă înregistrarea datelor dintr-o serie de rânduri, dăm următorul cod:
Elementele din lista sunt adăugate în jos, puteți utiliza metoda InsertBox.ObjectCollection Insert () pentru a schimba ordinea adăugării elementelor:
În acest caz, secvența locațiilor punctelor sa schimbat la opusul.
Metoda de inserare vă permite să inserați un element nou oriunde în listă.
Dacă toate elementele din listă sunt cunoscute, atunci codul următor care utilizează proprietatea Items din proprietatea AddRange este suficient pentru a le afișa:
Un alt mod de a adăuga rânduri este de a crea o serie de obiecte de sistem:
Și ultimul exemplu, folosind DataSource, dar rețineți că atunci când utilizați această metodă, sursa de date este afișată numai în control și, prin urmare, nu puteți elimina elementul de la control:
1.2.2. Accesarea rândurilor în Listă
Pentru a afișa accesul la rânduri, scrieți codul următor în codul handler pentru butonul 2:
După apăsarea butonului 1, selectarea mouse-ul de la oricare dintre estimări și apăsând 2, paragraful este afișat în titlul formularului (ce aici - în svoytvo Text - cod foarte puțin pentru a vedea când depanare valoare unei variabile, este adesea mult mai rapid decât orice altă metodă ).
Același efect poate fi obținut utilizând proprietatea Text:
Aceasta înseamnă că proprietatea Text stochează numai conținutul textului elementului selectat. În plus, dacă selectați mai multe elemente (modul de selecție MultiSimple sau MultiExtendet) în proprietatea Text, textul unui singur element - cel de sus - este stocat.
Pentru a obține numărul liniei selectate din listă, schimbați dispozitivul de manipulare al codului pentru apăsarea butonului 2 la următoarele:
Când se execută, putem vedea numerele indexului în antetul formularului.
Următorul cod, care demonstrează capacitatea de a utiliza proprietatea Items-Count, afișează numele tuturor elementelor din listă din antet:
Următorul cod arată, de asemenea, capacitatea de a extrage textul rândului selectat prin clic pe buton, utilizând aplicațiile de tratare a evenimentelor. Să creați editorul de evenimente listBox1_MouseDown (rețineți fila Evenimente din fereastra Proporții, faceți dublu clic pe câmpul de evenimente) și puneți în el următorul cod:
Pentru a determina indexul și acțiunile dintr-un element de listă, puteți folosi metoda FindString, care returnează indexul elementului cu textul găsit:
1.2.3. Eliminarea elementelor din listă
Pentru a șterge elemente din listă, utilizați una dintre următoarele metode:
Abilitatea de a șterge rânduri duplicate poate fi demonstrată pe codurile următoarelor agenți de procesare:
1.2.4. Modificați culoarea și fontul articolelor din listă
Pentru a schimba culoarea punctelor de control, folosim schimbarea culorii când sunt desenate. Pentru a face acest lucru, setați proprietatea DrawMode a ListBox-ului la OwnerDrawFixed. După aceea, creați manualul pentru evenimentul DrawItem pentru ListBox și plasați codul de mai jos:
După pornirea soluției, rezultatul este prezentat în Fig.2.
Fig.2. Modificări în culoarea elementelor din listă
Modificări ale fontului vor necesita costuri suplimentare asociate cu faptul că această schimbare conduce la o schimbare în câmpul dimensiunea ferestrei celulei la elementul din listă, și ca rezultat, - pentru Windows într-un fel trebuie să fie notificat în cazul în care un element de listă redată în fereastra. Pentru a face acest lucru, trebuie să creați un handler pentru evenimentul MeasureItem, utilizând rutina DrawItem. click eveniment cod handler pentru butonul 1 rămâne practic neschimbată, cu excepția faptului că este necesar să se facă vyzyvlos eveniment MeasureItem pentru fiecare element de redesenare lista (DrawMode DB OwnerDrawVariable):
Apoi, codul sursă pentru dispozitivele Handler DrawItem și MeasureItem poate fi următorul:
Rezultatul eliberării acestei soluții este prezentat în Fig.3.
Figura 3. Modifică liste de fonturi listă
1.2.5. Încărcați lista de liste din fișiere
Nu există metode speciale pentru a lucra cu fișiere în Listă, astfel încât să puteți face același lucru ca și când ați încărcat TextBox-ul.
Să verificăm în antetul prezența codului folosind System.IO; și scrieți următorul cod în modulul de tratare a evenimentului de la butonul 1:
Codul nu necesită explicații - aproape copia exactă pe care am văzut-o deja când descărcăm componenta TextBox.
Pentru a scrie într-un fișier, puteți folosi următorul cod:
Alte posibilități de lucru cu fișiere vor fi afișate atunci când se analizează paragraful "Încărcare ComboBox din fișiere".
Paragraful 2. Lucrul cu listele din ComboBox
2.1. Proprietățile de bază ale ComboBox
Ca și înainte, eliminăm din proiectul de cod al butonului handler evenimentului, toate funcțiile legate de controlul de sine și ListBox ListBox și controlul ComboBox pus pe formular.
Luați în considerare proprietățile sale (cele pe care nu le-am întâlnit înainte):
Proprietatea DropDownStyle specifică interfața utilizator (stil și ușurință de acces la câmpul text ComboBox). Când valoarea proprietății DropDown este o listă derulantă cu capacitatea de a modifica câmpul de text, cu DropDownList, accesul la câmpul text este închis. Dacă este setată proprietatea simplă, lista este întotdeauna deschisă (nu există niciun buton pentru extinderea listei) și este permisă editarea câmpului Text.
Schimbarea programului de DropDownStyle pare puțin diferită de atribuirea unei valori:
Proprietatea DropDownWidth specifică lățimea părții derulante a casetei combo. DropDownWidth nu poate fi mai mică decât lățimea lui ComboBox. În Fig.3. (vedeți mai jos), puteți vedea cum proprietatea DropDownWidth afectează vizualizarea listei derulante atunci când valoarea proprietății DropDownWidth este mai mare decât dimensiunea de control.
Alte proprietăți care diferă de controlul ListBox nu există în ComboBox, dar toate celelalte proprietăți sunt utilizate. Acest lucru înseamnă că ComboBox este, în esență, același ListBox, dar are un câmp separat pentru proprietatea Text și are capacitatea de a afișa elementele listate ca drop-down-uri. De aceea, în continuare, codurile deja utilizate în examinarea controlului ListBox, care iau în considerare doar caracteristicile minore ale ComboBox, sunt practic repetate.
2.2. Operațiuni pe liste în ComboBox
2.2.1. Adăugarea rândurilor într-un ComboBox
Pentru a seta proprietatea Items la etapa de proiectare, faceți clic pe elipsele de lângă ea în fereastra Proporties și, prin urmare, sunați editorul String Collection. În acesta, puteți introduce textele de șir necesare, care după ce faceți clic pe butonul "OK" apar în fereastra de control.
Pentru a adăuga linii programat, puteți utiliza una dintre următoarele metode:
2.2.2. Accesarea rândurilor în ComboBox
O caracteristică a ComboBox, acesta otlichyuschey din listbox, este că textul selectat vizual puteți vedea în fereastra text, alții în diferențe în dotupu lista cu elemente între kontrolmi nu. Ne amintim metodele considerate:
2.2.3. Eliminarea elementelor din listă
Pentru a șterge elemente din listă, utilizați una dintre următoarele metode:
Următorul exemplu demonstrează abilitatea de a șterge în mod repetat rânduri duplicat într-o listă atunci când se folosește metoda FindStringExact, care caută șirul specificat din indexul specificat sau începutul listei și, când este găsit, returnează indexul.
Acest cod poate fi utilizat pentru a selecta elemente din listă în anumite liste selectate, de exemplu, într-un alt ListBox, ComboBox sau TextBox.
2.2.4. Modificați culoarea elementelor din listă
În cazul unui handler pentru a apăsa butonul 1, vom scrie codul de inițializare a listei
Deoarece DrawMode = OwnerDrawVariable, putem redrama conținutul ComboBox așa cum vedem mai sus. Creăm un eveniment pentru ComboBox comboBox1_DrawItem, în care afișăm elementele cu culorile și fonturile necesare:
În cele din urmă, trebuie să spuneți Windows dimensiunea elementelor. Pentru a face acest lucru, creați un handler de evenimente pentru evenimentul MeasureItem, care apelează OWNERDRAWVARIABLE când desenați fiecare element din listă (altfel o singură dată).
Rezultatul este prezentat în Fig.
Figura 4. Modificări în culoarea și fontul articolelor din listă
2.2.5. Descărcați ComboBox din fișiere
Un număr de încărcare vozmozhnot de Speke fylov și conservarea mai devreme în secțiunea „Descărcarea de fișiere ListBox“ (acestea sunt pe deplin potrivit pentru ComboBox) au fost luate în considerare în dosarele, aici vom adăuga doar alte câteva posibilități.
Ca și înainte, vom crea o listă (vom folosi toată soluția și, ca și mai înainte, vom schimba doar codurile de manipulare a evenimentelor):
Vom scrie lista creată într-un fișier (nu uitați să includeți codul folosind System.IO;) direct folosind StreamWriter.
În director. \ bin \ debug \ fișierul a.txt va fi creat în care sunt încărcate rândurile din lista creată.
Pentru a verifica acest lucru și pentru a permite posibilitatea încărcării elementelor din listă, vom adăuga codul handlerului pentru apăsarea butonului 2:
După implementarea soluției, linkul va fi încărcat din fișier, iar ultimul element al listei va fi afișat în fereastra Text.
Punctul 3. Posibilități de selecție în ListBox și ComboBox
Pentru toate asemănările proprietăților controalelor, posibilitatea de a separa o parte din textul unui paragraf din ele este oarecum diferită. Această diferență se bazează pe faptul că lista nu are proprietățile SelectionStart și SelectionLength. Să luăm în considerare un exemplu de încărcare a controalelor și a selecției programelor (adăugând în mod natural în proiectul listei de control a deciziei):
Rezultatul acestui cod este prezentat în Fig.
Figura 5. Caracteristici ale selecției programelor în ComboBox și ListBox
Secțiunea 4. Caracteristicile utilizării CheckedListBox
Controlul CheckedListBox asupra setului de proprietăți corespunde aproape complet cu lista. Printre vocile unice (pe care ListBox nu le are):Proprietatea ThreeDCheckBoxes vă permite să modificați aspectul ferestrelor pentru a marca de la plat la încastrat.
Nu există alte proprietăți distincte de lista afișată în Proporties. CheckedListBox nu are. Toate acestea sugerează că principiile de lucru cu listele sunt aceleași pentru ele, aceleași metode și aceleași metode. Și, firește, CheckedListBox ar trebui să aibă, și ET, proprietăți pentru a stoca informații despre elementele etichetate din listă.
Deci, CheckedListBox are o metodă GetItemCheckState (), care vă permite să determinați dacă o literă a listei este marcată. Următorul cod va afișa fereastra "Verificat" din proprietatea Text în cazul în care primul element al listei este bifat și "Altceva" în caz contrar.
Rețineți că, ca și înainte, înainte de a verifica poziția casetei de selectare utilizând metoda GetItemCheckState (), puteți determina indexul unui anumit element, de exemplu:
Toată integritatea indexurilor elementelor marcate este stocată în proprietatea CheckedIndices, ca o colecție (o colecție de clești care încep cu 0) și verificând numărul de index din colecție, puteți stabili dacă un anumit element este marcat. Pentru a dezasambla utilizarea acestei proprietăți, vom transforma din nou soluția de proiect. Eliminăm din proiect codurile tuturor procesatorilor de evenimente pentru apăsări de taste, toate funcțiile legate de ListBox și ComboBox și aceste controale și le punem pe formularul de control CheckedListBox (cu toate acestea, probabil ați făcut deja acest lucru). În manualul de apăsare a butonului 1 se scrie codul pentru completarea listei (după cum se aștepta - nu diferă de cele deja folosite mai devreme):
Următorul cod va afișa numărul tuturor elementelor marcate din proprietatea Text, după cum se arată în Fig.6.
Figura 6. Definiția indicilor etichetați în CheckedListBox
Proprietatea CheckedItems este, de asemenea, o colecție de elemente marcate, dar nu și numerele acestora, ci nume sub formă de obiecte de tip șir. Următorul cod va afișa în proprietatea Text a formularului nu mai sunt numerele punctelor, ci textul acestora (Fig.7):
Figura 7. Determinarea textului indexurilor etichetate în CheckedListBox
Dacă ați venit de la un motor de căutare - vizitați pagina mea de pornire
Pe pagina principală veți găsi program complex Veles - pentru automobiliștii, programe din secțiunea program - program pentru lucrul cu fotografii realizate cu un aparat de fotografiat digital, cărămizi de program - o jucărie pentru copii și adulți, notebook-ul de program, program de TellMe - frazeologic Talking Engleză-Rusă - programul pentru cei care vor să rămână peste deal sau de a îmbunătăți cunoștințele de limba engleză, materialul teoretic asupra mediului de programare Borland C ++ Builder, C # (aplicație Windows și site-uri web ASP.Net).
Realizat de uCoz