02. januar 2007 - 10:18Der er
7 kommentarer og 1 løsning
Flicker Free listview
Jeg har søgt en hel del på google, og fundet eksempler, men jeg kan ikke finde en ordenlig løsning. Hvordan laver jeg et listview uden flicker, eller er der nogle der har et godt link? :)
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
nej, ikke hvis du bruger overstående ... det gør det mange gange hurtigere at tilføje da den ikke laver en redraw af din control før end du kalde EndUpdate igen ...
// ouT
Synes godt om
Slettet bruger
02. januar 2007 - 13:49#4
Tror ikke du forstår, jeg vil gerne have en viser itemsne efterhånden som de bliver fundet. Problemet er at når man laver Items.Add på listview, så redrawer den alle items for hver gang, og det er det der gør at det blinker. Med BeginUpdate vises listen ikk før du kalder EndUpdate.
Jeg fandt denne løsning som virker helt perfekt (med den rette opdatering af .net 2.0)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms;
namespace FFListview { public class FFListview : System.Windows.Forms.ListView { public FFListview() { //Activate double buffering this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
//Enable the OnNotifyMessage event so we get a chance to filter out // Windows messages before they get to the form's WndProc this.SetStyle(ControlStyles.EnableNotifyMessage, true); }
protected override void OnNotifyMessage(Message m) { //Filter out the WM_ERASEBKGND message if (m.Msg != 0x14) { base.OnNotifyMessage(m); } } } }
Jeg laver en udvidet control at listview, og sørger for at WM_ERASEBKGND ikke kaldes. Så bruger man blot dette listview i steddet.
Jeg forstod udemærket godt hvad du skrev ... du sagde bare ikke du genre ville have vist dine items mens den smed dem ind ... :-) big diff
Men godt at du fik det til at virke ...
Men hvis det alligevel er over 20 items, kan jeg ikke se noget grund til at tegne hele tiden ... men det er nok på den måde du bruger det i din sammenhæng jeg ikke kender, og nok derfor jeg ikke lige kan sætte mig ind i det ....
Men godt at du fik det til at virke ...
// oUT
Synes godt om
Slettet bruger
02. januar 2007 - 16:20#6
Grunden til at tegne hele tiden ville måske være at du har muluighed for at scrolle listviewet MENS den indsætter resultater.. ligsom i Windows når du søger på filer :)
Men self, hvis det bare handler om at få ting ind i listview'et hurtigt uden at man behøver at se dataerne, så er Begin og End Update en god ting, for det går nemlig ret meget hurtigere :)
tror der var en der havde testet lidt ... sagde det var omkring 100 gange hvis ikke mere :-P
Synes godt om
Slettet bruger
19. marts 2007 - 14:27#8
fandt selv en løsning, lukker
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.