Wysokość itema i ikonki w ListBox

0

Witam, chciałbym, aby kolejne elementy w ListBoxie miały tą samą wysokość, ale większą niż ta standardowa (powiedzmy, że x4). Napisałem taki kod, i chyba wysokość się zwiększyła, ale tekst z itemków zniknął :|

listBox1.DrawMode = DrawMode.OwnerDrawVariable;
listBox1.ItemHeight = 50;

I jak umieścić ikone obok tekstu w takim itemie (to jak już naprawię ten znikający tekst) ?

0
listBox1.DrawMode = DrawMode.OwnerDrawVariable;
listBox1.DrawItem += listBox1_DrawItem;
listBox1.ItemHeight = 30;

Do tego handler:

void listBox1_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.DrawBackground();
            e.Graphics.DrawString((string)listBox1.Items[e.Index], e.Font, new SolidBrush(e.ForeColor), e.Bounds);
            e.DrawFocusRectangle();
        }
0

To w sumie mi "tylko" tego handlera brakowało, dzięki. I przy okazji jak wyśrodkować tekst w tym itemie, bo mi przylega do górnej krawędzi i niezbyt ładnie to wygląda. No i te ikony jeszcze, wyrysować je normalnie umiem, ale nie w itemie, może jakaś wskazówka ? :)

0

Dobra, ogarnąłem to sam tylko mam jeden problem - dlaczego ikona rysuje się tylko w pierwszym itemie ? Zrobiłem to "analogicznie" do rysowania tekstu w handlerze, więc powinno rysować dla każdego...
teraz rozmazuje mi się na cały item, ale przynajmniej jest w każdym.

Icon ic = new Icon("defico.ico");
e.Graphics.DrawIcon(ic, e.Bounds);
1

Bo rysuje ikonkę zawsze od lewego górnego rogu

e.Graphics.DrawIcon(ic, 10, e.Index * 20);

Powinieneś użyć listview.

0

A co ma takiego przydatnego listView, czego nie ma listBox (wiadomo, że różnicę znam, ale chodzi o sam kontekst rysowania ikon) ?

0

Tak

1 użytkowników online, w tym zalogowanych: 0, gości: 1