abcd423417984 Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Hei Jeg bruker i .NET applikasjonen min en TabControl med 3 tabs. Problemet er at når jeg drar musa fra en tab til en annen så flimrer tabbene. Noen som har vært borti noe lignende og vet hvordan jeg kan fikse det? Er Visual C# 2008 i et nesten tomt prosjekt. Lenke til kommentar
Wubbable Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Ta på DoubleBuffered elns Lenke til kommentar
abcd423417984 Skrevet 22. februar 2009 Forfatter Del Skrevet 22. februar 2009 Hvordan? Forøvrig skal det nevnes at jeg kjører Vista, og at problemet ser ut til å forsvinne hvis jeg skrur på desktop composition... Vil gjerne unngå det hvis mulig. Lenke til kommentar
Wubbable Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 Det er en property på formen din... Lenke til kommentar
abcd423417984 Skrevet 23. februar 2009 Forfatter Del Skrevet 23. februar 2009 Hadde ingen effekt. Er det virkelig så krevende å tegne opp tabs? Eneste som fungerer er å skru på desktop composite, noe som er uaktuelt for enkelte av de som skal bruke applikasjonen. Lenke til kommentar
Wubbable Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 Prøv dette: GetType(TabControl).GetProperty("DoubleBuffered", (Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)).SetValue(TabControl1, True, Nothing) Sett inn navnet på din tabcontrol istedenfor TabControl1... Lenke til kommentar
GeirGrusom Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 Eventuelt dette public class MyTabControl : TabControl { public MyTabControl() { DoubleBuffered = true; } } Så unngår en hacken Lenke til kommentar
abcd423417984 Skrevet 23. februar 2009 Forfatter Del Skrevet 23. februar 2009 Er dette virkelig nødvendig? Virker jo som jeg er den eneste i hele verden som reagerer på dette. Lenke til kommentar
HDSoftware Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 Jeg har sikkert laget 20 programmer i de siste årene og har aldri hatt noe slikt. Hva er det du egentlig opplever? Lenke til kommentar
abcd423417984 Skrevet 23. februar 2009 Forfatter Del Skrevet 23. februar 2009 (endret) Jeg har sikkert laget 20 programmer i de siste årene og har aldri hatt noe slikt. Hva er det du egentlig opplever? Lag et program med en TabControl. Lag 3 tabs. dra musen mellom de 2 tabbene som IKKE er i fokus. Da flimrer den som et gammelt win32 program uten double buffering. Bruker Vista uten desktop composition (e.g. 3d-effekter skrudd av). Jeg synes dette er for svakt for en standard control. (som du kanskje skjønner er jeg ikke normalt .NET utvikler). Endret 23. februar 2009 av invictus Lenke til kommentar
HDSoftware Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 Vel, lagde et std. windows program. slang på en tab control, med 3 tabs. Kompilerte og kjørte. Nyll flimring. Eneste jeg kan se er at bakgrunnsfargen på tabben som er under musen skifter farge, men det er hverken irriterende eller stugt på noen som helst måte. Skrur nå av effekter for å se... Nå testet jeg med "Windows standard" tema. Resulterte kunn i at fargeskiftingen forsvant. Men fortsatt ingen irriterende effekter. Skjønner fortsatt ikke hva som er problemet her Lenke til kommentar
abcd423417984 Skrevet 23. februar 2009 Forfatter Del Skrevet 23. februar 2009 (endret) Vel, lagde et std. windows program. slang på en tab control, med 3 tabs. Kompilerte og kjørte. Nyll flimring. Eneste jeg kan se er at bakgrunnsfargen på tabben som er under musen skifter farge, men det er hverken irriterende eller stugt på noen som helst måte. Skrur nå av effekter for å se...Nå testet jeg med "Windows standard" tema. Resulterte kunn i at fargeskiftingen forsvant. Men fortsatt ingen irriterende effekter. Skjønner fortsatt ikke hva som er problemet her Hvis du har Vista, gå på properties for Computer -> Advanced System Settings -> Performance setting. Sett den til adjust for best apperance, men fjern desktop composition før du trykker OK. ...og prøv igjen. har nettopp fått dette bekreftet på en annen PC. Ble et øyeblikk redd for at det var noe galt med min PC. Prøvde også å kjøre opp et identisk program som .NET programmet, bare skrevet i QT4/C++, og der var det ikke noe flimmer. EDIT: Det synes ekstra godt hvis du resizer vinduet veldig fort...da går tabsene helt amokk. Er ikke meningen å være vanskelig, og jeg beklager hvis jeg oppfattes slik. Er bare svært viktig at vinduet tegner seg opp skikklig. Endret 23. februar 2009 av invictus Lenke til kommentar
Wubbable Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 (endret) Prøvde det du sa (Disablet bare desktop compo. i compability tabben på programmets egenskaper), og den flicker ikke mer enn når desktop compo. er slått på... (Når jeg resizer vinduet) Forstår heller ikke hva du mener med at de flicker når man tar musen over dem... Ingenting av det skjedde her... edit: Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams Get Dim cp As CreateParams = MyBase.CreateParams cp.ExStyle = cp.ExStyle Or &H2000000 'WS_EX_COMPOSITED Return cp End Get End Property Tok meg 2 minutt å finne på google Legg den i formen din sin kode. Endret 23. februar 2009 av Wubbable Lenke til kommentar
GeirGrusom Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 usj! VB er så stygt protected override System.Windows.Forms.CreateParams CreateParams { get { var cp = base.CreateParams; cp.ExStyle |= 0x2000000; return cp; } } Lenke til kommentar
Wubbable Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 Går det ikke an med "Or Equal" (|=) i VB? Lenke til kommentar
GeirGrusom Skrevet 24. februar 2009 Del Skrevet 24. februar 2009 Aner ikke, hadde ikke tvilt på om det ikke gikk. Du har jo &= i VB, men det er noe helt annet. Hva er egentlig poenget med ReadOnly eller WriteOnly i VB properties? Redundancy spør du meg. Lenke til kommentar
HDSoftware Skrevet 24. februar 2009 Del Skrevet 24. februar 2009 Pussig. Nå ser jeg det. Det rare er jo at ingen andre programmer i Windows oppfører seg slik. Men hjalp det noe med forslagene til de andre her? Lenke til kommentar
abcd423417984 Skrevet 24. februar 2009 Forfatter Del Skrevet 24. februar 2009 (endret) Pussig. Nå ser jeg det. Det rare er jo at ingen andre programmer i Windows oppfører seg slik. Men hjalp det noe med forslagene til de andre her? Hei. Takk for tilbakemeldingene. Du har helt rett i at ingen andre Windows programmer oppfører seg slik. Det er det som gjør det ekstra irriterende. Den CreateParams løsningen fungerte faktisk (!). Synes jo selvfølgelig det er litt håpløst å måtte subclasse TabControl. Denne burde være on by default fra Microsoft mener jeg. EDIT: fungerer hvis jeg bruker CreateParams løsningen på formen også. Utrolig at ikke dette skal være enabled by default! Hva slags kode er egentlig 0x2000000 i klassiske Win32 defines? Endret 24. februar 2009 av invictus Lenke til kommentar
GeirGrusom Skrevet 24. februar 2009 Del Skrevet 24. februar 2009 Hva slags kode er egentlig 0x2000000 i klassiske Win32 defines? WS_EX_COMPOSITED Paints all descendants of a window in bottom-to-top painting order using double-buffering. Lenke til kommentar
abcd423417984 Skrevet 24. februar 2009 Forfatter Del Skrevet 24. februar 2009 Hva slags kode er egentlig 0x2000000 i klassiske Win32 defines? WS_EX_COMPOSITED Paints all descendants of a window in bottom-to-top painting order using double-buffering. Hva er ulempen med denne ettersom den må eksplisitt skrus på? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå