webForumDet fria alternativet

Ändra properties i en Listbox

.NET

2 svar · 188 visningar · startad av Engine^

Medlem sedan dec. 20003 887 inlägg
Frågan#1

Tjosan! Jag skulle vilja ändra en rad i en listbox till att vara italic, men jag begriper inte hur man går till väga för att göra det... om det nu fungerar.

Jag har försökt med att ändra texten i kolumnen, men det vill sig inte

lboStuff.Column(0, lboStuff.ListIndex) = "Hmm..."

Då säger den bara 'Object required' och det kan jag väl förstå, men hur får jag tag på kolumnobjektet?

Jag hade tänkt mig att använda mig utav FontItalic-egenskapen sedan om jag bara hittar åt objektet.

Medlem sedan juni 20022 599 inlägg
#2

Oavsett om du kommer åt kolumn- eller radobjekt eller inte så har listboxar inget inbyggt stöd för olika fontegenskaper på enskilda rader.

Om du måste göra det så går det i grova drag till så här:

1. Subklassa huvudprogrammets fönsterfunktion och fånga WM_CREATE.
2. När du får WM_CREATE för listboxen så ändra listboxens style till WS_OWNERDRAW med SetWindowLong (annars funkar inte 3 o 4).
3. Subklassa listboxen och fånga WM_DRAWITEM.
4. Varje gång du får ett WM_DRAWITEM så ritar du själv texten med TextOut på det sätt du vill ha den.

Ett smidigare sätt kan vara att köra på en listvy istället. Listvyer har, vad jag vet, inte heller stöd för kursiv stil i enskilda celler, men däremot för plain/bold och olika färger. Det kanske du klarar dig på?

Medlem sedan dec. 20003 887 inlägg
#3

Jag tror det ligger till som så att jag orkar fanken inte göra det ;) Denna applikation ska låta WM vara och inte bry sig om sånna meddelanden.

Tack för svaret dock. (Jag ska spana in listvyer innan jag överger det här...)

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)