Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Milan Čížek:3.4.2021 0:23

Ahoj,

snažím se vytvořit kopii komponenty CheckedListBox, protože originál neumí vlastnost disable na konkrétních itemech-checkboxech. Ale nechová se mi to úplně dobře. Pokud kliknu na disabled položku, tak to překreslení je jakoby posunuté a vytvoří se jakýsi stín. Polohou textu to není, pokud umístění šoupnu, šoupne se i tento "stín". Jakoby nějaký styl nebo cleartype, ale odkud by se to bralo, když vlastnosti kopíruji?

Je to vidět tady, po kliku na poslední checkbox... https://snipboard.io/8eDVuI.jpg.

Celá třída upravené komponenty včetně metody OnDrawItem:
https://pastebin.com/pDchmxAf

Zkusil jsem: Zkoušel jsem různě hýbat s polohou textu a zkoumat parametry e.font, ale nevidím nic, co by zapříčiňovalo jiný vzhled textu.

Chci docílit: Chci komponentu CheckedListBox, kdy si budu moci vybrané checkboxy disablovat, aby na ně uživatel nemohl kliknout a nemohl je aktivovat.

 
Odpovědět
3.4.2021 0:23
Avatar
Milan Čížek:3.4.2021 1:28

Zkusil jsem také vykreslit zvlášť čtvereček checkboxu a pak extra text, ale chová se to stejně.

CheckBoxRenderer.DrawCheckBox(e.Graphics,
    new Point(e.Bounds.X + 1, e.Bounds.Y + 1),
    state);

TextRenderer.DrawText(e.Graphics, GetItemText(item), e.Font, new Rectangle(new Point(e.Bounds.X + glyphSize.Width + 3, e.Bounds.Y), new Size(e.Bounds.Width - glyphSize.Width, e.Bounds.Height)), Color.Red,
    TextFormatFlags.Left);
 
Nahoru Odpovědět
3.4.2021 1:28
Avatar
JerryM
Člen
Avatar
JerryM:17.4.2021 14:10

a to máš v čem ? starej .NET 4.7.2 ??? nebo novej ?? .NET5/6 ???

 
Nahoru Odpovědět
17.4.2021 14:10
Avatar
Milan Čížek:17.4.2021 14:35

Ahoj, už se mi podařilo vyřešit.
Problém byl v tom, že jsem v OwnerDraw neprováděl překreslení pozadí, ale rovnou jsem vypsal text. Je to tedy divné, ale po přidání e.DrawBackground() do OwnerDraw se to již chová jak má a vůbec se nezdá, že by se text na pozici třeba nějak pohnul.

Editováno 17.4.2021 14:35
 
Nahoru Odpovědět
17.4.2021 14:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.