Expansion treeview ellenőrzés

WinFormControls.exe forráskód letölthető az MSDN Code Center.

  • A fejlődő egyéni Windows Control a Visual Basic .NET (felülvizsgálat)
  • Hozzáadása érvényesítés reguláris kifejezés
  • Ötvözi többszörös ellenőrzés egyik
  • Expansion TreeView ellenőrzés
  • Rajz saját vezérlőket használva GDI +
  • bevezetés
  • Tervezési adatok társított fa struktúra
  • Végrehajtása kötelező ® Windows ® Forms adatok befektetett hatalmas erőfeszítések kódolás és tesztelés, és az összes ezt a munkát el kell végezni az esetben, ha az építési szabályozás kell kezdeni teljesen „a semmiből”. Ennek megfelelően, a jelen példában fog futni örökli származó meglévő elem kezelése Windows Form - Fa nézet - és annak beállítását. A kód az új TreeView vezérlő egy fájlt lehet letölteni, valamint más példát a fejlesztés a kontroll és a különféle alkalmazások, bizonyítva, hogy ez a kiterjesztett TreeView használható együtt más kapcsolódó adatok ellenőrzése.

Tervezés társított Fa nézet adatok

Figyelemmel hozzáadásával adatok kötelező TreeView ellenőrzés rendszeresen megérintette a Windows fejlesztők, de az alapvető szabályozási elem még mindig nem támogatja, mert a legfontosabb különbség TreeView és egyéb ellenőrzések, például ListBox vagy DataGrid: TreeView megjeleníti a hierarchikus adatokat. Külön táblázat adatait meglehetősen egyszerű megjelenítéséhez a ListBox vagy DataGrid, hanem kihasználják a hierarchikus jellegét TreeView megjeleníteni ugyanazt az adatot nem olyan egyszerű. Sok különböző módon használja TreeView jelenítheti meg az adatokat, hanem egy módszer a leggyakoribb: az egyesülés az adatok bizonyos területeken az asztal ábrán látható. 1.

Ábra. 1. Az adatok megjelenése egy TreeView

Ebben a példában, állítólag hogy hozzon létre egy TreeView vezérlőelem, amely át tud hatolni egy lapos adathalmazt (lásd. Ábra. 2) és könnyen elérjék az eredmény ábrán látható. 1.

Ábra. 2. A lakás eredmény halmaz, amely tartalmazza az összes szükséges információt, hogy megteremtse a fa ábrán látható. 1.

Ha egy saját vezérlő előtt kódoló ajánlott világosan elképzelni, milyen volt ez a vezérlés által használt másik fejlesztő. Ebben az esetben a fejlesztő (az adatokat, és a kívánt eredményt a fent leírt) képes csoportosítás csak le egy pár sort az alábbi kód:

Megjegyzés. Ez a kód - nem elég, amit kellett, de nem túl messze a kívánt eredményt. Tervezésekor a kontroll nyilvánvalóvá vált, hogy szükséges volt, hogy összekapcsolja a kép index a kapcsolódó ImageList TreeView ellenőrzés egyes kategóriákon szinten. Ezért egy további paramétert addgroup módszert adunk.

Ábra megjegyzések:
Csoport csomópontok - csapatwebhelyek
Levél csomópontok - végső csomópontok

Ábra. 3. A csomópontok és végső csomópontok csoportok

A különbség a cél csomópont és a csomópont csoport (lásd. Ábra. 3.) nagyon fontos a cikket, mivel úgy döntöttek, hogy feldolgozza a kétféle csomópont különböző módon létre egyedi osztályok minden típusra és generációs különböző események függvényében a csomópont típusát.

A végrehajtási adatok kötelező

Az első lépés írásban a kódot a vezérlés akkor létre kell hozni a projekt, és a megfelelő kiindulási osztályban. Ebben az esetben először hozzon létre egy új Windows Control Library projektet, majd eltávolítjuk a UserControl osztály az alapértelmezett, cserélje ki egy új osztályt, amely örökli a TreeView ellenőrzés:

Ettől a pillanattól kezdve munka folyik egy vezérlőelem lehet helyezni egy formába és azt a látszatot, és a munka ugyanúgy, mint a normál TreeView. A következő lépés az, hogy adjunk kódot képes kezelni az új funkciók ebben a verzióban TreeView - összekapcsolása és csoportosítja az adatokat.

Hozzáadása DataSource tulajdonság

Mindazokat a funkciókat az új szabályozás fontos, de a két legfontosabb jellemzőit kapcsolódó építési komplex adatok ellenőrzése feldolgozása tulajdonságok adatforrás és a fogadó tulajdonságait az egyes elemek minden objektum az adatforrás.

Tulajdon létrehozása eljárások

A kezdéshez szükséges, hogy bármely ellenőrző megvalósító komplex adatok kötelező, bevezetni és fenntartani adatforrás megfelelő eljárás tagváltozóival:

interfész IList

Tárgyakat lehet használni, mint egy adatforrás adatok kötő komplexet általában tartjuk IList felület, amely az adatokat egy gyűjteménye tárgyak, valamint számos hasznos tulajdonságai, például, Count. Új elem TreeView ellenőrzés megköveteli egy objektumot, amely támogatja a IList annak kötődését, de a másik IListSource felület is igen alkalmas, mivel ez egy egyszerű módszert (GetList) azért, hogy IList. Amikor a DataSource tulajdonság be van állítva, akkor ajánlott annak meghatározására, hogy adott egy érvényes tárgy, azaz amely támogatja a IList vagy IListSource. Javasoljuk, hogy válasszon a IList, mert ha a biztosított objektum támogatja csak IListSource (pl DataTable), akkor kapunk egy érvényes objektumot, az GetList () metódus az interfész.

Egyes tárgyak, amelyek megvalósítják IListSource (például az adatbázisba), valójában tartalmaznak több listát, amint ContainsListCollection tulajdon. Ha ez a tulajdonság True értékre van állítva, a IList GetList visszaadja egy objektum, amely egy lista több al-listák. Ebben a példában, úgy döntöttek, hogy fenntartani a kommunikációt közvetlenül tárgyak vagy IList IListSource, tárolására csak egy objektum IList és figyelmen kívül hagyja tárgyak, mint például adatbázis, amelyre szükség van, hogy tovább definiáljuk az adatforrás.

Megjegyzés. Ha azt szeretnénk, hogy támogatja ezt a típusú objektumok (DataSet vagy hasonló), akkor adjunk hozzá egy második, tulajdonságot (pl DataMember) meghatároz használt kötődni aljegyzék.

Ha megadta érvényes adatforrás, akkor a végeredmény egy objektumpéldányt CurrencyManager (cm = Me.BindingContext (Value)) jön létre. Ezt a példányt tároljuk helyi változó, mert ez lesz hozzáféréshez használt mögöttes adatforrás objektum tulajdonságai és helyzete információkat.

Hozzáadása Tulajdonságok Kijelző és érték

A jelenléte adatforrás - az első lépés egy összetett adat kötelező, de az elem a vezérlő kell tudni, milyen konkrét területeken vagy tulajdonságai adatokat kell felhasználni, hogy az értékek és a kijelző. Tagja a Display (kijelző) fogják használni, mint a címe a fa csomópontok Value távú (érték) is elérhető lesz a Value tulajdonság csomópontot. Ezek a tulajdonságok csak karakterlánc képviselő nevét mezők vagy tulajdonságokkal, és könnyen hozzá a szabályozás:

Ez TreeView ezek a tulajdonságok, amelyek tagjai a kijelző és érték végső csomópontokat, a vonatkozó információkat az egyes szintű csoportosítás határozza addgroup módszer.

A CurrencyManager objektum

Amint azt korábban a adatforrás fokon CurrencyManager jött létre, és tárolja az osztály szintű változó. Class CurrencyManager, amely elérhető az objektum, amely elengedhetetlen az ezek megvalósítása kötelező, mert olyan tulajdonságokkal rendelkezik, módszerek és események, amelyek lehetővé teszik:

  • lásd az alap objektumot IList adatforrás;
  • get és set mezőket vagy tulajdonságokat a létesítmény az adatforrás;
  • szinkronizálni más ellenőrző társított adatokat vezérlő elemek ugyanabban a formában.

Előállítás értékek ingatlan / Field

CurrencyManager objektum lehetővé teszi, hogy megkapjuk értékeit tulajdonságai az egyes elemek vagy mezők az adatforrás, például mezőkre vagy értékek DisplayMember ValueMember, keresztül módszer GetItemProperties. PropertyDescriptor tárgyak majd használni, így az értéke egy adott területen vagy tulajdon egy elemet listából. A következő kódrészlet szemlélteti, hogyan ezek a tárgyak jönnek létre PropertyDescriptor, és ennek következtében használhatók a funkció getValue, hogy megkapjuk a értéke egyik eleme a mögöttes adatforrás. Figyeljük List CurrencyManager objektum tulajdonság: hozzáférést biztosít egy példánya IList, amelyet összefüggésbe hoztak szabályozás:

GetValue visszaadja egy objektum típusától függetlenül az adatbázis tulajdonságait, mielőtt felhasználni, hogy a visszatérési érték.

A szinkronizálás támogatása, amelyek ezekhez ellenőrzések

CurrencyManager van egy másik fontos jellemzője: amellett, hogy hozzáférést biztosít a kapcsolódó adatforrás és az elem tulajdonságait, ellátja koordináta adatok közötti kötődést a kontroll és más vezérlőelemek ugyanazt adatforrás. Ez a támogatás biztosítja, hogy a több ellenőrzés társítható egyetlen adatforrás, továbbra is ugyanabban az elemben az adatforrás. A szabályozás a elemet kell tenni, hogy amikor egy elem van kiválasztva a fa bármely más ellenőrzések társított azonos jelzett adatforrás egy és ugyanazon elem (rekord, sorban vagy tuple felhasználásával terminológia adatbázisok). Ehhez az szükséges, hogy újra eljárás OnAfterSelect bázis TreeView ellenőrzés. Ebben az eljárásban, az úgynevezett kiválasztása után csomópontja, meg a pozíció tulajdonsága CurrencyManager objektumot az index az aktuálisan kiválasztott elem. Egy tipikus alkalmazás számára, és a kontroll TreeView azt szemlélteti, hogy a jelenség a szinkronizált vezérlés megkönnyíti az építési adatokkal kapcsolatos felhasználói felületek. Meghatározásának elősegítése, a helyzet az aktuálisan kiválasztott elem egy listában, használja hozzon létre egy egyéni osztályt TreeNode (TreeLeafNode vagy TreeGroupNode), és mentse minden csomópont a listán index tulajdonság Pozíció:

A tulajdonságok beállítása Pozíció CurrencyManager objektum lehetővé teszi, hogy szinkronizálást más vezérlőelemek az aktuálisan kiválasztott elem, hanem generálja CurrencyManager eseményeket, amikor az egyéb kezelőszerveket változtatni helyzetben, hogy lehetséges, hogy módosítsa a kiválasztott elem szükséges. Építeni egy kis jól kapcsolódik az adatokat komponens, a választás el kell mozdítani helyzetének megváltoztatásával az adatforrás, és ha a tárgy adatok megváltoztak, a kijelző frissíteni kell. CurrencyManager generál három esemény: CurrentChanged, ItemChanged és PositionChanged. Az utolsó esemény nagyon egyszerű; CurrencyManager egyik célja az, hogy szabályozza a jelenlegi helyzet mutatója az adatforrás, így több kapcsolódó ellenőrzési megjeleníti az azonos rekord vagy lista elemet, és ez lesz generálva bármilyen változás ebben a helyzetben. Bizonyos esetekben, az egyéb eseményeket egymásra, így azok nem nagyon világos. Itt van egy leolvasó való felhasználásuk a felhasználó ellenőrzése: PositionChanged - ez egy egyszerű esemény, ezért nézd meg rögtön; akkor használják, amikor ki kell igazítani az aktuálisan kiválasztott elem az összetett társított adatok ellenőrzése, mint például egy adott fa. ItemChanged esemény akkor generálódik, ha minden elemet az adatforrás és CurrentChanged - csak akkor, ha az aktuális elem.

Ebben TreeView, azt találták, hogy mind a három esemény keletkezik, amikor egy új elemet, ezért úgy döntöttek, hogy kezelje az eseményt PositionChanged amikor megváltoztatja a jelenleg kiválasztott elem, és a másik két esemény feldolgozása nem egyáltalán. A dokumentáció a .Net Framework ajánlott átalakítani az adatforrást IBindingList (ha támogatja IBindingList), és helyette azt ListChanged esemény, de ezek a funkciók nem hajtották végre:

Átalakítása adatforrás a fa

Amikor befejezte az adat-összerendelés kódot, akkor lehet kezdeni dolgozni hozzáadjuk a többi kódot, hogy manipulálják a szintek csoportosulás, épít egy fa rendesen, és adjunk hozzá egy kevés egyéni események, módszerek és tulajdonságait.

csoport kezelése

Létre kell hoznia egy addgroup funkció RemoveGroup és ClearGroups, konfigurálni gyűjteménye csoportok. Minden alkalommal, amikor változik a gyűjtemény csoportok a fát kell rajzolni (az tükrözze az új konfiguráció), így jött létre az általános eljárás GroupingChanged okozta egy másik kód mindenhol irányít, amikor a módosításokat, és frissíti a fa: P

Az épület fa

A tényleges frissítés a fa feldolgozása két eljárások: BuildTree és AddNodes. Kódjuk meglehetősen hosszú, ezért megpróbál egy értékelje a viselkedés, és nem tartalmazzák az összes kódot ebben a cikkben (persze, akkor töltse le azt). Mint már korábban említettük, a fejlesztő együttműködik ezen ellenőrző beállításával a csoportok száma, amelyeket aztán használt BuildTree, hogy állítsa be a fa csomópontokat. BuildTree törli az aktuális gyűjtemény csomópontot cirkuláltatjuk át az adatforrás a folyamatok az első szintű csoportosítás (lásd. Kiadó példákban és rajzok ebben a cikkben a fenti), hozzátéve, egy csomópont minden különböző értéket csoportok (egy csomópont minden egyes értékére pub_id ebben a példában ), majd felhívja AddNodes, hogy töltse ki az összes csomópont alatt az első szintű csoportosítás. AddNodes nevezi magát rekurzívan feldolgozni tetszőleges számú szintek hozzá a csoport a csomópontok és végső csomópontokat, ill. Két egyedi osztály alapján TreeNode, megkülönböztetésére használható csoportok csomópontok és végső csomópontokat, és minden csomópont típusát a beállított vonatkozó tulajdonságok.

Beállítása TreeView események

Amikor kiválasztunk egy TreeView vezérlő csomópont generál két esemény: BeforeSelect és AfterSelect. Azonban jobb ellenőrzése az elem különböző rendezvények csoportjába csomópontok és végső csomópontokat, így hozzá egyéni események BeforeGroupSelect / AfterGroupSelect és BeforeLeafSelect / AfterLeafSelect egyéni osztályai esemény paramétereit, hogy a generált mellett az alapvető eseményekre:

Egyéni csomópont osztályok (TreeLeafNode és TreeGroupNode) és a felhasználó által definiált osztályok események lehetőségek állnak rendelkezésre a kódot letölteni.

tipikus alkalmazás

Ahhoz, hogy megértsük az összes kódot ebben a mintában ellenőrzés, elemezze teljesítményét a kérelmet. Feltéve minta alkalmazás működik a Microsoft Access pubs.mdb adatok és szemlélteti, hogy a fa vezérlőelem együttműködik más kapcsolódó adatok ellenőrzése létrehozni Windows alkalmazások. A fő jellemzője ez a példa, hogy meg kell, hogy fordítsanak különös figyelmet a felvétele fa szinkronban más kapcsolódó ellenőrzések és automatikusan kiválasztja a csomópontja ha az adatforrás keresendő.

Megjegyzés. T ő egy tipikus alkalmazás (az úgynevezett „TheSample”) letölthető ezt a cikket.

Ábra. 4. bemutató alkalmazás adatokhoz társított TreeView

Fa társított adatok ellenőrzése tárgyalja ez a cikk nem a megoldás minden projekt igénylő fa vezérlő információ megjelenítésére az adatbázisból az adatok azonban azt mutatják, az egyik módja, hogy konfigurálja magát egy adott célra. Nem szabad elfelejteni, hogy a legtöbb kód Ebben a kontroll egyezik a kód minden bonyolult adatokhoz kötött ellenőrzése, hogy a felépítéséhez szükséges, és lehetőség van bővíteni ezt a meglévő munkáját, hogy elősegítsék a kontrollok a jövőben.

Az alábbi példában a „Rajz saját vezérlőket használva GDI +” illusztráljuk egy sokkal egyszerűbb módja a végrehajtási adatok kötelező azokban az esetekben, ahol nem kell használni egy adott alap osztály (a kontroll) az öröklés a TreeView ellenőrzés.

Forum programozó
hírek
vélemények
Top programozó
Weboldalak könyvtár
keresés
fájl hozzáadása
visszacsatolás