ListView Transparent BackColor / Design Selected Items – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

ListView Transparent BackColor / Design Selected Items – .NET – Fórum – Programujte.comListView Transparent BackColor / Design Selected Items – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Tomáš
~ Anonymní uživatel
511 příspěvků
19. 1. 2013   #1
-
0
-

Zdravím dělám si aplikaci, v které používám listview. Bohužel nastal problém, design celého okna je můj a ten listview se do toho vůbec nehodí. Potřeboval bych nějakým způsobem změnit opacity nebo nastavit transparent na asi 70% aby ten listview byl vlastně průhledný, ale vůbec nevím jak na to ... na google jsem hledal a hledal ale nic pádního jsem nenašel. A ještě mám problém u selected itemů ( vlastně to zvíraznění po kliknutí myší ) mám tam takovou hnusnou defaultní modrou což se mi tam vůbec nehodí a po kliknutí na item se zvírazní jen text a obrázek vedle něj... já bych potřeboval zvíraznit celý řádek ale i přes to že mám 

FullRowSelect = true;

se vůbec nic neděje.. úplně nejlepší bylo kdybych si mohl udělat design toho zvíraznění pomocí nějakého vlastního obrázku. Předem děkuju za každou odpověď.

Tomáš

Nahlásit jako SPAM
IP: 188.175.140.–
Reklama
Reklama
Tomáš
~ Anonymní uživatel
511 příspěvků
19. 1. 2013   #2
-
0
-

Malá nápověda :)

private void ServerList_DrawItem(object sender, DrawListViewItemEventArgs e)
        {
            if (e.ItemIndex == -1) return;
            float BorderWidth = 210;
            using (Brush textBrush = new SolidBrush(Color.White))
            {
                Brush TextColor = Brushes.Black;
                Brush SelectedTextColor = Brushes.Blue;
                Font font = ServerList.Font;
                // border
                if (e.Item.Selected == true)
                {
                    // border
                    e.Graphics.FillRectangle(Brushes.Black, e.Bounds.X, e.Bounds.Y, BorderWidth, e.Bounds.Height - 1);
                    e.Graphics.DrawRectangle(new Pen(Brushes.Black), e.Bounds.X, e.Bounds.Y, BorderWidth - 1, e.Bounds.Height - 1);
                }
                else if (e.Item.Selected == false)
                {
                    e.Graphics.FillRectangle(Brushes.White, e.Bounds.X, e.Bounds.Y, BorderWidth, e.Bounds.Height - 1);
                    e.Graphics.DrawRectangle(new Pen(Brushes.White), e.Bounds.X, e.Bounds.Y, BorderWidth - 1, e.Bounds.Height - 1);
                }
                e.Graphics.DrawString(e.Item.Text, font, SelectedTextColor, e.Bounds.Left, e.Bounds.Top + 1);
            }
        }

Udělal jsem to takhle :) označené itemy jsou v pohode ale když preskočím na jiný item tak tam půla toho rámečku zůstane :) ví někdo proč? :(

Nahlásit jako SPAM
IP: 188.175.140.–
Tomáš
~ Anonymní uživatel
511 příspěvků
19. 1. 2013   #3
-
0
-

achjo mám tu topic celý den abych se s tím nemusel tolik piplat a někdo mi poradil co dělám špatně :D nakonec si človek všechno musí vyřešít sám :( -> fixed kdyby někdo potřeboval

private void ServerList_DrawItem(object sender, DrawListViewItemEventArgs e)
        {
            if (e.ItemIndex == -1) return;
            Graphics g = e.Graphics;
            Font font = ServerList.Font;
            if (e.Item.Selected == true)
            { 
                e.DrawBackground(); // new background ( item is online )
                e.Graphics.FillRectangle(Brushes.Black, e.Bounds.X, e.Bounds.Y, e.Bounds.Width + 200, e.Bounds.Height - 1); // border
                ServerList.ForeColor = Color.FromArgb(50, 146, 242); // blue text color
            }
            else
            {
                e.DrawBackground(); // new background ( item is offline )
                e.Graphics.FillRectangle(Brushes.Transparent, e.Bounds.X, e.Bounds.Y, e.Bounds.Width + 200, e.Bounds.Height - 1);
            }
            e.DrawText();
            Bitmap MyIcon = global::Soulwell___Realmlist_modifer.Properties.Resources.on;
            e.Graphics.DrawImage(MyIcon, e.Bounds.Left + 190, e.Bounds.Top + 8, 10, 10);
            MyIcon.Dispose();
        }
Nahlásit jako SPAM
IP: 188.175.140.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 30 hostů

Podobná vlákna

Transparent blt — založil max

ListView — založil _Radek_

ListView — založil curro70

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý