Ping DataGridView négyzetet kezel használatával datagridviewimagecolumn
Megjelenése óta az egykor legendás Delphi sokat változott. De mi maradt - Ping néhány beépített látvány.
Volt ez az élmény, ha a fejlődő egyszerű domain chekkera. Nagyon könnyen használható, úgy tűnik, egy interfész elem - egy négyzetet oszlop - sőt, szörnyen lassú. Hogy megjelölje 500 sor szükséges, körülbelül 10 másodpercig. 1000 bejegyzés nőtt idején 4 (2 helyett, mint gondolnád). Nincs semmi trükk nem ad jelentős teljesítménynövekedést.
Googling az interneten, elköszönt az ötlet, hogy tegyen valamit alapján az oszlop típusát.
Újoncok panaszkodott lassú munka, és a „régi” tanácsos használni egy közönséges négyzetet adunk programozottan, hogy a megfelelő helyre. Kiderült, hogy sok a megfelelő helyeken, és manipulálni a kijelző négyzeteket kell még kézzel - határozza meg a látható vonal, meg a négyzetet, hogy a megfelelő helyen, hogy „emlékezzen” kijelző (on / off) minden. Már kezdtem nem magukat egy ilyen hack, de jutott egy másik lehetséges típusú oszlopok - DataGridViewImageColumn.
Kiderült, hogy erre van szüksége. Módon, hogy „taxi” sok, azt sugallják, hogy ő használt magát.
Kezdjük azzal, hogy szükség van, hogy készítsen 2 lobogó szerinti államok: jelölt-e vagy sem. Az én esetemben, azt a képet mérete 40 × 20 képpont. Ebben az esetben az oszlopok szélességét 20.
Alkalmazása a képre az egy sejt, összehangolja azt a jogot (vagy balra) él, attól függően, hogy melyik oldalon a „madár”.
Határozza meg a státuszát be / ki ellenőrzi a széle, amelyen a igazított képeket. Hagyja, hogy a tábla az úgynevezett dataGridView1. Az oszlopot az „jelölőnégyzeteket” (ne feledjük, hogy ezek nem igazi, hanem csak a emuláció) lesz az első. Függőleges igazítás logikus, hogy nem a felezőpontja. Ezután kapcsolja be a négyzetet az alábbi két lehetőség lehet írni, hogy az első sorban:
dataGridView1.Rows [0] .Cells [0] .Style.Alignment = DataGridViewContentAlignment.MiddleLeft;
// vagy
dataGridView1.Rows [0] .Cells [0] .Style.Alignment = DataGridViewContentAlignment.MiddleRight;
Így a kép igazítását a bal / jobb (bal / jobb) él (függőleges - a középső, ahogy azt a közel).
Minden szuper. Most már programozott manipulálni a jelek minden sorban, illúzióját (ami függ a minősége a rajz) teljes jogú tagja.
De ez csak egy része a problémának. Egy jó ötlet, hogy a felhasználó módosíthatja az állapotát a négyzeteket kattintva a sejtekben az első oszlopban. Ez az esemény segít CellClick - csak kattintson duplán a megfelelő mezőbe a Tulajdonságok fülre → Események az aktív elemmel formák DataGridView.
private void dataGridView1_CellClick (tárgy feladó, DataGridViewCellEventArgs e)
// e.RowIndex - line
// e.ColumnIndex - oszlop
// System.Drawing.Bitmap
// Ha az első sor és az oszlop (negatív értékek - fejlécek).
ha (e.ColumnIndex == 0 e.RowIndex> = 0) // ha a baloldali igazítást.
ha a (dataGridView1.Rows [e.RowIndex] .Cells [0] .Style.Alignment == DataGridViewContentAlignment.MiddleLeft)
//. majd kapcsoljuk be a jobbra igazítás
dataGridView1.Rows [e.RowIndex] .Cells [0] .Style.Alignment = DataGridViewContentAlignment.MiddleRight;
>
mást //. másként nem rendelkezik - a bal oldalon
dataGridView1.Rows [e.RowIndex] .Cells [0] .Style.Alignment = DataGridViewContentAlignment.MiddleLeft;
>
// így törölje vonalak
dataGridView1.Rows [e.RowIndex] .Cells [0] .Selected = false;
>
>
A név a elfogó - dataGridView1_CellClick () - IDE generál automatikusan. Azt is hozzá a megfelelő kódot. DataGridViewContentAlignment felsorolás meghatározza állandók kép igazítását a sejtben.
Általában, ez minden. Azok számára, akik elérték itt, megmutatom, hogyan lehet változtatni / kombinálni háttérképeket. Tegyük fel, hogy letöltött egy új erőforrás (kép), és adott neki egy nevet csekket. Hozzáférés a beágyazott erőforrások Properties.Resources alkalmazás. Ha elfelejtette a nevét, az alkalmazás, akkor láthatjuk, hogy az ablakban Solution Explorer. Az én esetemben ez MyWindowsApplication.
// első sorban, hogy használja a forrás ellenőrzés
dataGridView1.Rows [0] .Cells [0] .Value = MyWindowsApplication.Properties.Resources.check;
// a második - check2
dataGridView1.Rows [1] .Cells [0] .Value = MyWindowsApplication.Properties.Resources.check2;
Meglepő módon egy ilyen egyszerű módszer gyorsítja „otmechivaniyu az” egy nagyságrenddel (és még inkább növeli a sorok számát).