SortArrow v ListView   zodpovězená otázka

VB.NET

Zdravim,

mam jeden takovej... mno jenom kosmetickej problem

v ListView zobrazuju, v zahlavi sloupcu sipku, ktera indikuje podle ktery sloupce a jak je ListView serazenej. Tak jak je to obvykly u vetsiny aplikaci:

http://duffon.rajce.idnes.cz/ListView_So...

co bych chtel vedet, jak dostanu tu sipku na pravou stranu sloupce? Zatim to mam takhle, ale moc se mi to nelibi:

http://duffon.rajce.idnes.cz/ListView_So...

tady na foru jsem nasel zminku o OwnerDraw, tak jestli byste mi mohli trosku priblizit co to je a jak s tim pracovat. Diky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

OwnerDraw je způsob, kdy se standardní vykreslovací metody ovládacích prvků nahradí vlastními. Většinou to probíhá tak, že u třídy odvozené od nějakého ovládacího prvku přepíšete chování metody OnPaint, nebo použijete událost Paint u již existujícího ovládacího prvku. Při požadavku o překreslení části ovládacího prvku (např. při překrytí jiným oknem a následném odkrytí nebo při minimalizaci a maximalizaci aplikace) bude jeden z parametrů kreslící plocha (Graphics) a oblast do které můžete kreslit (Rectangle). Toto využijete pro vykreslování vlastního vzhledu ovládacího prvku a vzhledem k tomu, že pracujete s rozhraním GDI+ tak fantazii se meze nekladou (obrázky, ikony, barevné přechody, tvary, různé druhy písem a vzorů)...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

a nemuzete mi ukazat, jak teda vykreslim neco v hlavicce sloupce?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Private Sub ListView1_DrawColumnHeader(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawListViewColumnHeaderEventArgs) Handles ListView1.DrawColumnHeader
  e.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush(e.Bounds, Color.Yellow, Color.Gray, Drawing2D.LinearGradientMode.Vertical), e.Bounds)
  e.Graphics.DrawImageUnscaled(New Bitmap("ArrowUp.png"), e.Bounds.Width - 14, 4)
  e.DrawText()
End Sub

Výsledek vypadá takto:

http://img215.imageshack.us/img215/6108/...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

dobry, ale jeste si dovolim jednu otazku...

muzu udelat, ze styl celyho prvku vykresli system a ja na nej potom vykreslim jeste tu sipku?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, na to se v Redmondu také myslelo.

Private Sub ListView1_DrawColumnHeader(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawListViewColumnHeaderEventArgs) Handles ListView1.DrawColumnHeader
  'Vykreslit standardní pozadí
  e.DrawBackground()
  'Vykreslit standardní text
  e.DrawText()
  'Vykreslit vlastní obrázek
  e.Graphics.DrawImageUnscaled(New Bitmap("ArrowUp.png"), e.Bounds.Width - 14, 4)
End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

diky moc, uz jsem to pochopil

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback