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.







Ping DataGridView négyzetet kezel használatával datagridviewimagecolumn

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).