DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Panelのautoscroll時に、

環境/言語:[C#]
分類:[.NET]

こんにちは

下のような.NETマニュアルを参考に、
自分で作成したユーザコントロールを20個ほど
panel1.Controls.Add(userControl)
のように、新規にきれいに並べて配置・追加していこうとするのですが、
AutoScrollが発生してスクロールバーが表示されるように
なると、描画される配置がむちゃくちゃとなってしまいます。

原因が思い当たらないのですが、
なにかこのような経験をされた方アドバイス願います。



====
『Panel コントロールを作成し、 Label および TextBox を Panel に追加する例を次に示します。 Panel コントロールは、 Panel コントロールが位置する場所をフォーム上のほかのオブジェクトと区別するために 3D 境界線付きで表示されます。』

public void CreateMyPanel()
{
Panel panel1 = new Panel();
TextBox textBox1 = new TextBox();
Label label1 = new Label();

// Initialize the Panel control.
panel1.Location = new Point(56,72);
panel1.Size = new Size(264, 152);
// Set the Borderstyle for the Panel to three-dimensional.
panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;

// Initialize the Label and TextBox controls.
label1.Location = new Point(16,16);
label1.Text = "label1";
label1.Size = new Size(104, 16);
textBox1.Location = new Point(16,32);
textBox1.Text = "";
textBox1.Size = new Size(152, 20);

// Add the Panel control to the form.
this.Controls.Add(panel1);
// Add the Label and TextBox controls to the Panel.
panel1.Controls.Add(label1);
panel1.Controls.Add(textBox1);
}
[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
  • 題名: Re[1]: Panelのautoscroll時に、
  • 著者: さかつ
  • 日時: 2005/01/08 22:57:22
  • ID: 8291
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
> 自分で作成したユーザコントロールを20個ほど
> panel1.Controls.Add(userControl)
> のように、新規にきれいに並べて配置・追加していこうとするのですが、
> AutoScrollが発生してスクロールバーが表示されるように
> なると、描画される配置がむちゃくちゃとなってしまいます。
>

自己フォローです。

@ panel1.Controls.Clear() する。
A 配置する全てのコントロールのSize, Locationなど配置関連を確定する。
Anchorは使えない模様。
B 配置したいコントロールの個数を数え、以下の配列を作って、そこに貯める。
Control[] ctrlArray = new Control[num];
C panel1.Controls.AddRange(ctrlArray); 一気に書き込み。

というやり方で解決しました。
個々に panel1.Controls.Add() はなぜかうまく行きませんでしたが、、
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板