AutoScrollPosition per Code verändern
-
Hallo,
ich habe ein Panel mit Scrollbalken und möchte gerne per Code die Position des Scrollbalkens auf einen bestimmten Wert setzen.
private void button1_Click(object sender, EventArgs e) { panel1.AutoScrollPosition = new Point(100, 100); // das geht panel1.AutoScrollPosition.X = 100; // geht nicht, Fehlermeldung: // Der Rückgabewert ... kann nicht geändert werden, da er keine Variable ist } private void panel1_Scroll(object sender, ScrollEventArgs e) { Console.WriteLine(panel1.AutoScrollPosition.X); // das geht }
Ich verstehe nicht, warum der Schreibzugriff auf die X-Komponente nicht möglich ist. Warum geht das nicht? Nach meinem Verständnis ist das ein Integer, wo man eigentlich direkt reinschreiben kann, ohne zuvor ein neues Point-Objekt zu erzeugen.
Gruß
Michael
-
Das liegt daran, daß der Datentyp Point ein Wertetype (value type) ist.
Du mußt also immer den gesamten Datentyp als Variable vorhalten (einlesen, dann Eigenschaft verändern, neu zuweisen):var pos = panel1.AutoScrollPosition; pos.X = 100; panel1.AutoScrollPosition = pos;
oder eben:
panel1.AutoScrollPosition1 = new Point(100, panel1.AutoScrollPosition.Y);
-
Danke. Das schreibe ich gleich in meine Sammlung nützlicher Hinweise rein.
Gruß
Michael