2012-01-16 29 views
8

「Panel」に要素を動的に追加する機能を記述しました。動的パネル要素の追加とスクロールバー

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は、すべてのコンポーネントでプロパティ "AutoSize = true"を持つUserControlです。 このパネルにはAutoScrollプロパティがあるため、スクロールバーがあります。 問題は、要素がスクロールバーの位置によって異なる方法で追加されることです。スクロールバーが上部にある場合は、必要に応じてすべて追加されます。一番下にあるスクロールバーを追加する時には、その後、項目を追加する場合

enter image description here

しかし

が間違って

enter image description here

私が間違っているとどのようにそれを修正するよ何を教えてください?ありがとうございました。悪い英語

+0

は、どのようなAPIの情報とタグを追加してもらえあなたは使用していますか?私の推測はWindowsフォームですが、正しいタグを追加すればもっと多くの人に手を差し伸べることができます。 – dowhilefor

+0

はい、Windowsフォームです。 – Anton

+0

今、私はFlowLayoutPanelを使用してこの問題を解決していますが、私はまだ分かっています。 – Anton

答えて

6

パネル内のコントロールを配置するとき、あなたはスクロール位置を補正する必要があるために残念:

基本的には、このラインを使用してみてください:

d.Location = new Point(0, panel1.AutoScrollPosition.Y + Point.Y); 
関連する問題