Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
DataGridView a sorok, oszlopok és fejlécek mérete számos különböző előfordulás miatt változhat. Az alábbi táblázat ezeket az előfordulásokat mutatja be.
| Előfordulás | Leírás |
|---|---|
| Felhasználói átméretezés | A felhasználók a sor-, oszlop- vagy fejlécelválasztók húzásával vagy dupla kattintásával módosíthatják a méreteket. |
| Az átméretezés vezérlése | Oszlopkitöltési módban az oszlopszélességek megváltoznak, amikor a vezérlő szélessége megváltozik; Ha például a vezérlő a szülőűrlaphoz van rögzítve, és a felhasználó átméretezi az űrlapot. |
| Cella érték változtatása | A tartalomalapú automatikus méretezési módokban a méretek az új megjelenítési értékeknek megfelelően változnak. |
| Metódushívás | A programozott tartalomalapú átméretezés lehetővé teszi az opportunista méretmódosítást a cellaértékek alapján a metódushívás idején. |
| Tulajdonságbeállítás | Meghatározott magasság- és szélességértékeket is beállíthat. |
Alapértelmezés szerint a felhasználói átméretezés engedélyezve van, az automatikus méretezés le van tiltva, és az oszlopoknál szélesebb cellaértékek el vannak vágva.
Az alábbi táblázat olyan forgatókönyveket mutat be, amelyekkel módosíthatja az alapértelmezett viselkedést, vagy adott méretezési beállításokat használhat adott hatások eléréséhez.
| Forgatókönyv | Megvalósítás |
|---|---|
| Oszlopkitöltő mód használata a hasonló méretű adatok viszonylag kis számú oszlopban való megjelenítéséhez, amelyek a vezérlőelem teljes szélességét elfoglalják a vízszintes görgetősáv megjelenítése nélkül. | Állítsa a AutoSizeColumnsMode tulajdonságot Fillértékre. |
| Oszlopkitöltési mód használata különböző méretű megjelenítési értékekkel. | Állítsa a AutoSizeColumnsMode tulajdonságot Fillértékre. Inicializálja a relatív oszlopszélességeket az oszloptulajdonságok FillWeight beállításával vagy a vezérlő AutoResizeColumns metódus meghívásával, miután a vezérlőt adatokkal töltötte ki. |
| Oszlopkitöltési módot használjon különböző fontosságú értékekkel. | Állítsa a AutoSizeColumnsMode tulajdonságot Fillértékre. Állítson be nagy MinimumWidth értékeket olyan oszlopokhoz, amelyeknek mindig meg kell jeleníteniük az adataik egy részét, vagy a kitöltési módtól eltérő méretezési lehetőséget kell használniuk adott oszlopokhoz. |
| Az oszlopkitöltő mód használata a vezérlő hátterének megjelenítésének elkerülése érdekében. | Állítsa be az utolsó oszlop AutoSizeMode tulajdonságát Fill értékre, és használjon más méretezési beállításokat a többi oszlophoz. Ha a többi oszlop túl sok szabad területet használ, állítsa be az MinimumWidth utolsó oszlop tulajdonságát. |
| Rögzített szélességű oszlop, például ikon vagy azonosító oszlop megjelenítése. | Állítsa be a AutoSizeMode és None értékeket, valamint a Resizable és False értékeket az oszlophoz. Inicializálja a szélességét a Width tulajdonság beállításával vagy a vezérlő AutoResizeColumn metódus meghívásával, miután a vezérlőt adatokkal töltötte ki. |
| A méreteket automatikusan módosíthatja, amikor a cella tartalma megváltozik a kivágás elkerülése és a helyhasználat optimalizálása érdekében. | Automatikus méretezési tulajdonság beállítása tartalomalapú méretezési módot képviselő értékre. Ha nagy mennyiségű adattal dolgozik, a teljesítménybeli büntetés elkerülése érdekében használjon olyan méretezési módot, amely csak a megjelenített sorokat számítja ki. |
| Módosítsa a méreteket úgy, hogy illeszkedjenek a megjelenített sorok értékeihez, így elkerülheti a teljesítménybeli büntetéseket, ha sok sort használ. | Használja a megfelelő méretezési módú számbavételi értékeket automatikus vagy programozott átméretezéssel. Ha úgy szeretné módosítani a méreteket, hogy az újonnan megjelenített sorokban lévő értékekhez igazodjon görgetés közben, hívja meg az átméretezési módszert egy Scroll eseménykezelőben. Ha testre szeretné szabni a felhasználó dupla kattintással történő átméretezését, hogy csak a megjelenített sorokban lévő értékek határozzák meg az új méreteket, hívjon meg egy átméretezési módszert egy RowDividerDoubleClick vagy ColumnDividerDoubleClick eseménykezelőben. |
| A méreteket úgy módosíthatja, hogy csak adott időpontokban illeszkedjenek a cellatartalmakhoz, hogy elkerülje a teljesítménybírságokat, vagy lehetővé tegye a felhasználók átméretezését. | Meghívhat egy tartalomalapú átméretezési módszert egy eseménykezelőben. Például használja a DataBindingComplete eseményt a kötés utáni méretek inicializálására, és kezelje a CellValidated vagy CellValueChanged eseményt a méretek hozzáigazítására a felhasználói módosítások vagy a kötött adatforrás változásaihoz. |
| Sormagasság beállítása többsoros cellatartalmakhoz. | Győződjön meg arról, hogy az oszlopszélességek megfelelőek a szöveg bekezdéseinek megjelenítéséhez, és automatikus vagy programozott tartalomalapú sorméretezést használ a magasságok beállításához. Győződjön meg arról is, hogy a többsoros tartalommal rendelkező cellák a WrapMode cellastílus értékével jelennek meg True. Általában automatikus oszlopméretezési módot használ az oszlopszélességek fenntartására, vagy a sormagasságok beállítása előtt azokat meghatározott szélességre állítja. |
Átméretezés az egérrel
Alapértelmezés szerint a felhasználók átméretezhetik azokat a sorokat, oszlopokat és fejléceket, amelyek nem használnak automatikus méretezési módot a cellaértékek alapján. Ha meg szeretné akadályozni, hogy a felhasználók más módokkal, például az oszlopkitöltési móddal átméreteződjenek, állítson be egy vagy több tulajdonságot a következő DataGridView tulajdonságok közül:
A tulajdonságok beállításával Resizable azt is megakadályozhatja, hogy a felhasználók átméretezzék az egyes sorokat vagy oszlopokat. Alapértelmezés szerint a Resizable tulajdonság értéke az AllowUserToResizeColumns oszlopok tulajdonságértékén és a AllowUserToResizeRows sorok tulajdonságértékén alapul. Ha azonban explicit módon állítja a Resizable vagy True értékét False-re, a megadott érték felülírja az adott sor vagy oszlop vezérlőelemének értékét. Állítsa be a Resizable értékét NotSet-re az öröklés újra engedélyezéséhez.
Mivel NotSet visszaállítja az értéköröklést, a Resizable tulajdonság soha nem ad vissza NotSet értéket, hacsak a sor vagy oszlop nem lett hozzáadva egy DataGridView vezérlőelemhez. Ha meg kell állapítania, hogy egy Resizable sor vagy oszlop tulajdonságértéke öröklődik-e, vizsgálja meg annak tulajdonságát State . Ha az State érték tartalmazza a ResizableSet jelölőt, a Resizable tulajdonság értéke nem öröklődik.
Automatikus méretezés
A vezérlő kétféle automatikus méretezést tartalmaz: az oszlopkitöltési módot és a DataGridView tartalomalapú automatikus méretezést.
Az oszlopkitöltési mód hatására a vezérlőelem látható oszlopai kitöltik a vezérlő megjelenítési területének szélességét. Erről a módról további információt a Windows Forms DataGridView vezérlő oszlopkitöltő módjában talál.
A sorok, oszlopok és fejlécek úgy is konfigurálhatók, hogy a méretük automatikusan igazodjon a cellatartalmakhoz. Ebben az esetben a cellatartalom változásakor a méretbeállítás történik.
Megjegyzés:
Ha virtuális módban tart fenn cellaértékeket egy egyéni adatgyorsítótárban, az automatikus méretezés akkor történik meg, ha a felhasználó módosít egy cellaértéket, de nem történik meg, ha az eseménykezelőn kívül CellValuePushed módosít egy gyorsítótárazott értéket. Ebben az esetben hívja meg a UpdateCellValue metódust, hogy kényszerítse a vezérlőt a cellamegjelenítés frissítésére és az aktuális automatikus méretezési módok alkalmazására.
Ha a tartalomalapú automatikus méretezés csak az egyik dimenzióban van engedélyezve - azaz csak a soroknál, de nem az oszlopoknál, vagy csak az oszlopoknál, de nem a soroknál -, és a WrapMode is engedélyezve van, akkor a méretmódosítás akkor is megtörténik, amikor a másik dimenzió megváltozik. Ha például a sorok, de az oszlopok nem automatikus méretezésre vannak konfigurálva, és WrapMode engedélyezve van, a felhasználók oszlopelválasztókat húzva módosíthatják az oszlop szélességét, és a sormagasságok automatikusan módosulnak, hogy a cellatartalmak továbbra is teljes mértékben megjelenjenek.
Ha sorokat és oszlopokat is konfigurál a tartalomalapú automatikus méretezéshez, és WrapMode engedélyezve van, a vezérlő minden alkalommal módosítja a DataGridView méreteket, amikor a cella tartalma megváltozik, és ideális cellamagasság-szélesség arányt használ az új méretek kiszámításakor.
A fejlécek és sorok, valamint a vezérlőértéket felül nem bíráló oszlopok méretezési módjának konfigurálásához, állítson be egy vagy több DataGridView tulajdonságot.
Ha szeretné felülbírálni a vezérlő oszlopméretezési módját egy adott oszlop esetében, állítsa tulajdonságát olyan értékre, amely különbözik a AutoSizeMode-től. Az oszlop méretezési módját valójában a tulajdonsága határozza meg InheritedAutoSizeMode . Ennek a tulajdonságnak az értéke az oszlop tulajdonságértékén AutoSizeMode alapul, kivéve, ha ez az NotSetérték , ebben az esetben a vezérlőelem AutoSizeColumnsMode értéke öröklődik.
Nagy mennyiségű adat használatakor körültekintően használja a tartalomalapú automatikus átméretezést. A teljesítménybeli büntetések elkerülése érdekében használja az automatikus méretezési módokat, amelyek csak a megjelenített sorok alapján számítják ki a méreteket a vezérlő minden sorának elemzése helyett. A maximális teljesítmény érdekében inkább programozott átméretezést használjon, hogy adott időpontokban, például közvetlenül az új adatok betöltése után átméretezhető legyen.
A tartalomalapú automatikus méretezési módok nem befolyásolják azokat a sorokat, oszlopokat vagy fejléceket, amelyeket a sor- vagy oszloptulajdonság Visible vagy a vezérlő RowHeadersVisible vagy ColumnHeadersVisible tulajdonságok false értékére állításával rejtett el. Ha például egy oszlop el van rejtve, miután automatikusan méretezve lett egy nagy cellaértékhez, a rejtett oszlop nem módosítja a méretét, ha törli a nagy cellaértéket tartalmazó sort. Az automatikus méretezés nem történik meg a láthatóság módosításakor, ezért az oszloptulajdonság Visible visszaállítása true nem kényszeríti a méret újraszámítására az aktuális tartalma alapján.
A programozott tartalomalapú átméretezés a láthatóságuktól függetlenül hatással van a sorokra, oszlopokra és fejlécekre.
Programozott átméretezés
Ha az automatikus méretezés le van tiltva, programozott módon állíthatja be a sorok, oszlopok vagy fejlécek pontos szélességét vagy magasságát a következő tulajdonságokon keresztül:
A sorokat, oszlopokat és fejléceket programozott módon is átméretezheti a tartalomnak megfelelően az alábbi módszerekkel:
Ezek a metódusok egyszer átméretezik a sorokat, oszlopokat vagy fejléceket ahelyett, hogy konfigurálják őket a folyamatos átméretezéshez. A program automatikusan kiszámítja az új méreteket, hogy az összes cellatartalmat kivágás nélkül megjelenítse. Ha azonban programozott módon átméretezi azokat az oszlopokat, amelyek InheritedAutoSizeMode tulajdonságértéke Fill, akkor a számított, tartalomalapú szélességek arányosan módosítják az oszlop FillWeight tulajdonságértékeit, és ezután a tényleges oszlopszélességeket ezeknek az új arányoknak megfelelően számítja ki, úgy hogy az összes oszlop kitöltse a vezérlő elem elérhető megjelenítési területét.
A programozott átméretezés segít elkerülni a folyamatos átméretezés által okozott teljesítménybeli hátrányokat. Hasznos a felhasználó által átméretezhető sorok, oszlopok és fejlécek kezdeti mérete, valamint az oszlopkitöltési mód is.
A programozott átméretezési módszereket általában meghatározott időpontokban fogja meghívni. Előfordulhat például, hogy programozott módon átméretezi az összes oszlopot közvetlenül az adatok betöltése után, vagy programozott módon átméretez egy adott sort egy adott cellaérték módosítása után.
Tartalomalapú méretezési viselkedés testreszabása
A méretezési viselkedést a származtatott DataGridView cella-, sor- és oszloptípusok használatakor testre szabhatja a DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight és DataGridViewColumn.GetPreferredWidth metódusok felülírásával, vagy a védett átméretezési metódus túlterhelések meghívásával egy származtatott DataGridView vezérlőelemben. A védett átméretezési módszer túlterhelései úgy lettek kialakítva, hogy párban működjenek ideális cella-magasság-szélesség arány eléréséhez, elkerülendő a túl széles vagy magas cellákat. Például, ha meghívja a AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) metódus AutoResizeRows overloadját, és a false paraméternek átad egy Boolean értéket, az overload kiszámítja a sor celláinak ideális magasságát és szélességét, de csak a sormagasságot állítja be. Ezután meg kell hívnia a metódust, AutoResizeColumns hogy az oszlopszélességeket a számított ideálishoz igazítsa.
Tartalomalapú méretezési beállítások
A tulajdonságok és metódusok méretezése által használt enumerációk hasonló értékekkel rendelkeznek a tartalomalapú méretezéshez. Ezekkel az értékekkel korlátozhatja, hogy mely cellákat használja a rendszer az előnyben részesített méretek kiszámításához. Az összes méretezési enumerálás esetében a megjelenített cellákra hivatkozó névvel rendelkező értékek a megjelenített sorok celláira korlátozzák számításaikat. A sorok kizárásával elkerülheti a teljesítménycsökkenést, ha sok sorral dolgozik. A számításokat korlátozhatja a fejléc vagy a nem fejléc cellák értékeire is.
Lásd még
- DataGridView
- DataGridView.AllowUserToResizeColumns
- DataGridView.AllowUserToResizeRows
- DataGridView.ColumnHeadersHeightSizeMode
- DataGridView.RowHeadersWidthSizeMode
- DataGridViewBand.Resizable
- DataGridView.AutoSizeColumnsMode
- DataGridView.AutoSizeRowsMode
- DataGridViewColumn.AutoSizeMode
- DataGridViewColumn.InheritedAutoSizeMode
- DataGridView.RowHeadersWidth
- DataGridView.ColumnHeadersHeight
- DataGridViewRow.Height
- DataGridViewColumn.Width
- DataGridView.AutoResizeColumn
- DataGridView.AutoResizeColumns
- DataGridView.AutoResizeColumnHeadersHeight
- DataGridView.AutoResizeRow
- DataGridView.AutoResizeRows
- DataGridView.AutoResizeRowHeadersWidth
- DataGridViewAutoSizeRowMode
- DataGridViewAutoSizeRowsMode
- DataGridViewAutoSizeColumnMode
- DataGridViewAutoSizeColumnsMode
- DataGridViewColumnHeadersHeightSizeMode
- DataGridViewRowHeadersWidthSizeMode
- Oszlopok és sorok átméretezése a Windows Forms „DataGridView” vezérlőelemben
- Oszlopkitöltő mód a Windows Forms DataGridView vezérlőben
- Útmutató: A Windows Forms DataGridView vezérlő méretezési módjainak beállítása
.NET Desktop feedback