FlowLayoutPanelのPadding
FlowLayoutPanelはPaddingをうまく扱えてないっぽい。
using System; using System.Drawing; using System.Windows.Forms; namespace Flow { public class Form1 : Form { private Button button1; private FlowLayoutPanel flowLayoutPanel1; private Random random = new Random(); private int count = 0; [STAThread] static void Main() { Application.Run( new Form1() ); } public Form1() { button1 = new Button(); button1.Location = new Point( 19, 13 ); button1.Click += button1_Click; flowLayoutPanel1 = new FlowLayoutPanel(); flowLayoutPanel1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; flowLayoutPanel1.AutoScroll = true; flowLayoutPanel1.BackColor = Color.White; flowLayoutPanel1.Location = new Point( 12, 42 ); flowLayoutPanel1.Size = new Size( 268, 211 ); Controls.Add( flowLayoutPanel1 ); Controls.Add( button1 ); Text = "FlowTest"; button1.Text = count.ToString(); //flowLayoutPanel1.Padding = new Padding( 20, 20, 20, 50 ); } private void button1_Click( object s, EventArgs e ) { Label l = new Label(); l.Text = count.ToString(); l.BackColor = Color.FromArgb( random.Next( int.MaxValue ) ); flowLayoutPanel1.Controls.Add( l ); button1.Text = count.ToString(); count++; } } }
このリストはボタンを押すたびにFlowLayoutPanelにラベルを追加していくサンプル。どんどんラベルを追加したり、formのサイズをいろいろ変えても、スクロールするとラベルはきちんとすべて見える。
次に、Form1()の最後の行のPadding設定をしている箇所のコメントをはずして、コンパイル実行すると、奇妙な動作になる。
おそらくスクロールで見える範囲は、Paddingなしで計算した範囲となっている。一方、表示にはPaddingが適用されてスクロールで見える範囲をはみ出しているような感じだ。なんだかなぁ。不具合報告ってどこからどうしたらいんだろ...。