Blog Home  Home Feed your aggregator (RSS 2.0)  
artiso Blog - Panels über separaten Scrollbar scrollen
Neues rund um's Thema .Net
 
 Tuesday, September 12, 2006

Eigentlich dachte ich, das sei eine ganz simple Aufgabe, aber dann hat mich das Ganze doch 2 Stunden Zeit gekostet. Das Ziel war, zwei Panels über einen separaten Scrollbar zu scrollen. Alse Panels in der Form platziert, AutoScroll auf false gesetzt, damit nicht jedes Panel mit einem Scrollbar versehen wird und den Scrollbar hinzugefügt. Der Event für das Scrollen war auch schenll gefunden, aber dann gab es Probleme.

Deshalb hier die Vorgehensweise, die nach meinen Versuchen am besten funktioniert hat.

private void Form2_Load(object sender, EventArgs e)
{
   this.panel1.AutoScroll = true;
   this.panel2.AutoScroll = true;
   this.ultraScrollBar1.Minimum = this.panel1.HorizontalScroll.Minimum;
   this.ultraScrollBar1.Maximum = this.panel1.HorizontalScroll.Maximum;
   this.ultraScrollBar1.Value = this.panel1.HorizontalScroll.Value;
   this.ultraScrollBar1.SmallChange = this.panel1.HorizontalScroll.SmallChange;
   this.ultraScrollBar1.LargeChange = this.panel1.HorizontalScroll.LargeChange;
   this.panel1.AutoScroll = false;
   this.panel2.AutoScroll = false;
}

private void ultraScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
   this.panel1.AutoScrollPosition = new Point(e.NewValue, 0);
   this.panel2.AutoScrollPosition = new Point(e.NewValue, 0);
}

Hierzu ein paar Anmerkungen:
1.) Die Werte für Minimum, Maximum, SmalChange und LargeChange können vom Panel nur dann sauber abgefragt werden, wenn AutoScroll = true gesetzt ist.
2.) Wird die Scrollposition über this.panel1.HorizontalScroll.Value gesetzt, was naheliegend wäre, kommt es bei abgeschaltetem AutoScroll zu einem seltsamen Flimmer-Effekt. Statt dessen muss die AutoScrollPosition gesetzt werden.
3.) Auch für das zweite Panel muss das AutoScroll einmal aktiviert und dann wieder deaktiviert werden, sonst scrollt das nicht mit.

Also diese Lösung funktioniert mal.

Diese Vorgehensweise scheint mir jedoch recht unlogisch und sehr umständlich. Ob das Framework da nichts besseres bietet oder ob ich da einfach noch nicht den richtigen Dreh gefunden hab, weiss ich im Moment noch nicht. Ich werde bei Gelegenheit das mal vertiefen und an dieser Stelle wieder posten.

Tuesday, September 12, 2006 2:22:54 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [1]    | 
Wednesday, July 02, 2008 3:09:52 PM (Mitteleuropäische Zeit, UTC+01:00)
Gerade selber 2 Stunden gesucht und geärgert - logisch ist das ja nicht gerade, funktioniert aber!
Danke!
Stefan
All comments require the approval of the site owner before being displayed.
Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):

Copyright © 2009 Thomas. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.
Pick a theme: