2012-01-16 13 views
8

Ho scritto una funzione per aggiungere dinamicamente elementi al "Pannello".Aggiunta elemento dinamico e barre di scorrimento

public int State;   
public Point Point = new Point(0, 0); 
public void DialogAdd(string message, string author) 
     { 
      var d = new DialogMessage(); 
      if(State == 0) 
      { 
       d.BackColor = Color.FromArgb(255, 237, 241, 245); 
       State = 1; 
      } 
      else 
      { 
       State = 0; 
      } 


      d.Controls["name"].Text = author; 
      d.Location = new Point(0, Point.Y); 
      d.Controls["msg"].Text = message; 
      Point.Y += d.Size.Height; 
      Controls["panel1"].Controls.Add(d); 

     } 

DialogMessage è UserControl, che haves proprietà "AutoSize = true" su tutti i componenti. Questo pannello ha la proprietà AutoScroll, quindi ha barre di scorrimento. Il problema è che gli elementi vengono aggiunti in modi diversi, a seconda della posizione della barra di scorrimento. Se la barra di scorrimento è in alto, vengono aggiunti tutti se necessario.

enter image description here

ma se al momento di aggiungere la barra di scorrimento in basso, quindi aggiungere gli elementi che non va

enter image description here

prego di dirmi che cosa sto facendo di sbagliato e come rimediare ? Grazie. dispiace per cattivo inglese

+0

Potrebbe per favore aggiungere informazioni e tag quali API tu stai usando? La mia ipotesi è che i moduli di Windows, ma si raggiungerà più persone se si aggiunge solo il tag corretto. – dowhilefor

+0

Sì, è Windows Form. – Anton

+0

Ora, risolvo questo problema usando FlowLayoutPanel, ma voglio ancora sapere, cosa sto facendo male :) – Anton

risposta

6

Quando si posizionano i controlli all'interno del pannello, si deve compensare la posizione di scorrimento:

In sostanza, provare a utilizzare questa linea:

d.Location = new Point(0, panel1.AutoScrollPosition.Y + Point.Y); 
Problemi correlati