Gå til innhold

[Løyst] TableLayoutPanel og scrolling


Anbefalte innlegg

Eg sitt her og herje med eit prosjekt i VS.NET 2005 (C#, om du ville vete det), og har eit problem med TableLayoutPanel (TLP) og scrolling.

 

Min TLP består av ein kolonne og mange rader, som blir satt opp under runtime. Dette fungerer strålande, men når formen vises er den slik som på det vedlagte bildet.

 

Eg vil kvitte meg med den horisontale scrollbaren. Eg bruker no AutoScroll, og etter litt enkel googling fant eg ein måte som kan fungere, men den involverte å override WndProc, og dermed hekte seg på Win32 API, som er litt dumt når ein skriv i .NET.

 

Kolonnen er satt til å autosize bredde (eg veit ikkje kor stort vindauget vil bli), og alle radene er også satt til autosize høyde.

 

Problemet, slik eg ser det, er at Windows først teiknar opp den første rada, så den andre, og får plass til desse to. Når den legger til den tredje, så må ein innføre ein vertikal skrollbar for å få plass, og då blir breidden på vindauget 20 px mindre, slik at det kjem ein horisontal scrollbar.

 

Er det nokon som har nokre tips til korleis eg kan kvitte meg med den horisontale scrollbaren med minst mulig kode?

 

(Ja, eg sensurerte vekk deler av teksten på bildet sånn at ingen skal finne ut kva type program eg driv med. Det er greit, eg er paranoid.) :)

post-3507-1135959294_thumb.jpg

Lenke til kommentar
Videoannonse
Annonse

Hmm du kan

 

a) Sette 20 px ekstra fra starten :p

 

b) Når du henter ut radene kan du sette en variable til å øke med, og så sette 20 px ekstra når den går til nr. 3. Kanksje ikke like optimalt, men det fungerer.

 

Vet ikke om den kolonna har sånn property men du kan se om den har Scrollbars. Der kan du sette til Vertical.

Endret av Zic0
Lenke til kommentar
Hmm du kan

 

a) Sette 20 px ekstra fra starten :p

 

b) Når du henter ut radene kan du sette en variable til å øke med, og så sette 20 px ekstra når den går til nr. 3. Kanksje ikke like optimalt, men det fungerer.

 

Å sette 20 piksler direkte, utsetter bare buggen litt, uansett korleis ein gjer det. Det er full mulig å stille på dette i Windows, slik at ein får større scrollbars, og difor er eg litt lite gira på å gjere det slik. Dessuten bruker eg AutoSize på kontrollane eg sett inn, så i så fall må eg begynne å styre resizing sjølv, som eg ikkje akkurat har lyst til.

 

Vet ikke om den kolonna har sånn property men du kan se om den har Scrollbars. Der kan du sette til Vertical.

5358714[/snapback]

 

TableLayoutPanel har VerticalScrollbar og HorizontalScrollbar, men ingenting skjer når eg slår på desse (ja, eg slår på både enabled og visible), så dette er litt mystisk.

Lenke til kommentar

Eg fekk det endelig til, ved å plassere følgande kode i Form_Load;

 

            Width += SystemInformation.VerticalScrollBarWidth;
           Width -= SystemInformation.VerticalScrollBarWidth;

 

Dette er dog ein suboptimal løysing, så om nokon har eit betre løysing, fyr laus... :)

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...