Sorry, besseres Topic ist mir nicht eingefallen.
Also es geht kurz und schmerzlos darum ein Steuerelement das zur Laufzeit erzeugt wird an eine bestimmte Position (Location) erscheinen zu lassen, selbst wenn die Form nach rechts gescrollt ist.
Warum werden immer die 'sichtbaren' Koordinaten und nicht die 'wirklichen' des Forms für die .Location genommen ?(
Hier ein Bsp:
private void button1_Click(object sender, EventArgs e)
{
Label testLabel = new Label();
testLabel.Text = "Test";
testLabel.Location = new Point(10, 10);
testLabel.Size = new Size(50, 15);
this.Controls.Add(testLabel);
}
Form nach Click (so weit, so gut):
Fenster verkleinert:
Click-> Label nicht absolut links oben sondern links oben im sichtbaren Bereich:
Nach vergrößern des Fensters das Dilemma:
~ There's no knowledge that is not power~
Hallo andreas-82,
Control.Anchor
Control.Dock
herbivore
Hallo herbivore.
Hatte ich zuerst auch daran gedacht, allerdings handelt es sich um Panels die zeilenweise mit Daten gefüllt aus einer Datenbank ausgelesen werden:
Siehe Anhang
...
private const Int16 StartXPanel = 3;
private const Int16 StartYPanel = 159;
...
// Panel erstellen in dem die Labels für jede Zeile geadded werden
Panel pan = new Panel();
pan.Width = BreitePanel;
pan.Height = HoehePanel;
pan.BorderStyle = BorderStyle.FixedSingle;
pan.Name = "Zeile";
//pan.Anchor = AnchorStyles.Left;
//pan.Dock = DockStyle.Left;
pan.BackColor = hintergrundfarbe;
pan.Location = new Point(StartXPanel, StartYPanel + yPositionRelativ); //Startposition des Panel
...
Wenn ich nach rechts gescrollt die Daten aktualisiere, bzw. die Sortierung ändere, ist der ganze Rummel verschoben (siehe Bild).
Ein Anchor bringt keine Änderung und ein Dock 'Pappt' logischerweise das Panel mit voller Höhe direkt an die linke Seite 🙁
~ There's no knowledge that is not power~
Hat denn keiner ne Idee? 🙁
Oder vielleicht nen Befehl um die 'Scrollposition' wieder auf den Ursprungszustand zurückzusetzen um erst dann die Label zu erstellen damit sie auf der richtigen Position landen...?
~ There's no knowledge that is not power~
Oder vielleicht nen Befehl um die 'Scrollposition' wieder auf den Ursprungszustand zurückzusetzen um erst dann die Label zu erstellen damit sie auf der richtigen Position landen...?
Du musst dir ein Panel ableiten, dort gibt es dann ein AutoscrollPosition property welches du allerdings (komischerweise) nur im OnPaint setzen kannst. Die koordinaten dafür sind allerdings auch ein bisschen verquert, musst du dir dann mal im Debugger anschauen.
Hey jaensen,
DANKE für deine Antwort, hat mein Problem auf Anhieb gelöst, juhu! =) 👍
Du musst dir ein Panel ableiten, dort gibt es dann ein AutoscrollPosition property welches du allerdings (komischerweise) nur im OnPaint setzen kannst. Die koordinaten dafür sind allerdings auch ein bisschen verquert, musst du dir dann mal im Debugger anschauen.
Kann die Eigenschaft im Übrigen in meinem UserControl direkt setzen, auch ohne OnPaint-Ereignis 👅
this.AutoScrollPosition = new Point(0, 0);
this.AutoScrollPosition = new Point(0, 0);
~ There's no knowledge that is not power~
Kann die Eigenschaft im Übrigen in meinem UserControl direkt setzen, auch ohne OnPaint-Ereignis
Grummel, warum geht das bei mir nicht 😉