Announcement

Collapse
No announcement yet.

Location in Autoscroll-Pane?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Location in Autoscroll-Pane?

    Ich habe mit dem Positionieren von Controls ein Problem, wenn sie in einem Panel liegen, von dem nur ein Ausschnitt sichtbar ist.

    Also ich hab ein Panel mit AutoScroll=true. Darin liegen eine Vielzahl von Childcontrols, die von Zeit zu Zeit neu angeordnet (positioniert) werden.

    Das Problem ist, dass wenn die Scrollbars angezeigt werden, sich offensichtlich ständig der Nullpunkt verschiebt und man daher beim neuerlichen setzen von anychild.Location das DisplayRectangle vom Parent (dh myPanel) berücksichtigen muss.
    Und das kann ich mir nicht vorstellen, dass das richtig ist. Ich denke ich seh da irgendwas falsch. Es kann ja nicht sein, dass ich beim positionieren eines Controls ständig abfragen muss, ob beim Parent ein Scrollbar sichtbar ist und wo der gerade steht.

    Einfaches Beispiel: Ein Panel mit 10 Buttons
    Code:
    public TestScrolling()
    {
       Panel pnl = new Panel ();
       pnl.Parent = this;
       pnl.Dock = DockStyle.Fill;
       pnl.AutoScroll = true;
    
       for (int i = 0; i < 10; i++) {
          Button anyChild = new Button ();
          anyChild.Parent = pnl;
          anyChild.Location = new Point (0, i * 40);
          anyChild.Text = anyChild.Location.ToString();
          anyChild.Tag = i;
          anyChild.Click += btn_Click;	// move botton right
       }
    }
    
    void btn_Click(object sender, EventArgs e)
    {
       // move Button from X=0 to X=40
       Button anyChild = (Button)sender;
       Point pt = new Point (40, (int)anyChild.Tag * 40);
       pt.Offset (anyChild.Parent.DisplayRectangle.Location);	// why is this necessary ????
       anyChild.Location = pt;
       anyChild.Text = anyChild.Location.ToString ();
    }
    Danke im voraus.
    LG,
    Tommi
Working...
X