tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDockについて
記事No8176
投稿日: 2008/09/19(Fri) 12:00
投稿者タロ
いつもお世話になっています。
Dockについて質問です。

SplitContainer1.Panel1の中にPanelで囲んだテキストやラベルをDockプロパティ:TOPで画面作成しています。
ある位置から、Panelで囲んだテキスト等を自動配置するようにしているのですが、Dock =System.Windows.Forms.DockStyle.TopとするとSplitContainer1.Panel1の一番上に表示されてしまいます。
どのように対処すればよいのでしょうか。

Private field_txt() As System.Windows.Forms.TextBox
Private field_pnl() As System.Windows.Forms.Panel
Private field_dtp() As System.Windows.Forms.DateTimePicker

For iRows = start_row To end_row
    Me.field_pnl(iRows - 1) = New System.Windows.Forms.Panel
    With Me.field_pnl(iRows - 1)
        'プロパティ設定
        .Name = iRows.ToString()
        .Location = New System.Drawing.Point(0, 279 + 85 * (iRows - 1))
        '.Dock = System.Windows.Forms.DockStyle.Top
        .BorderStyle = BorderStyle.FixedSingle
        .Size = New System.Drawing.Size(503, 86)
    End With

    Me.field_txt(iRows - 1) = New System.Windows.Forms.TextBox
    With Me.field_txt(iRows - 1)
        'プロパティ設定
        .Name = "txt_KIROKU" + iRows.ToString()
        .Dock = System.Windows.Forms.DockStyle.Fill
        .Location = New System.Drawing.Point(118, 0)
        .Multiline = True
        .Size = New Point(385, 86)
    End With

    Me.field_dtp(iRows - 1) = New System.Windows.Forms.DateTimePicker
    With Me.field_dtp(iRows - 1)
        'プロパティ設定
        .Name = "dtp_KIROKU" + iRows.ToString()
        .Dock = System.Windows.Forms.DockStyle.Left
        .Location = New System.Drawing.Point(0, 0)
        .Size = New System.Drawing.Size(118, 19)
        .Format = System.Windows.Forms.DateTimePickerFormat.[Short]
    End With

    SplitContainer1.Panel1.Controls.Add(Me.field_pnl(iRows - 1))
    field_pnl(iRows - 1).Dock = System.Windows.Forms.DockStyle.Top
    field_pnl(iRows - 1).Controls.Add(field_txt(iRows - 1))
    field_pnl(iRows - 1).Controls.Add(field_dtp(iRows - 1))

Next

環境:VB2008
よろしくお願い致します。

[ツリー表示へ]
タイトルRe: Dockについて
記事No8177
投稿日: 2008/09/19(Fri) 12:09
投稿者魔界の仮面弁士
コントロールの親子関係が良く分かりませんでした…。
一般掲示板の方に、画面イメージを掲載できませんか?

> Dock =System.Windows.Forms.DockStyle.Topとすると
> SplitContainer1.Panel1の一番上に表示されてしまいます。
Top ならば、一番上で良いのでは無いでしょうか。

# 私が質問の意図を理解していない気がする…。


> どのように対処すればよいのでしょうか。
Dock とあわせて、Margin/Padding プロパティをセットするとか、あるいは
Dock のかわりに Anchor を使うとか、あるいは Panel の代わりに
TableLayoutPanel を使うなどして調整できないでしょうか。

[ツリー表示へ]
タイトルRe^2: Dockについて
記事No8178
投稿日: 2008/09/19(Fri) 13:02
投稿者タロ
魔界の仮面弁士さん、返信ありがとうございます。

やりたいことは、
SplitContainer1.Panel1の中に
固定PanelA ラベル Panel:DOCK TOP
固定PanelB テキスト Panel:DOCK TOP
固定PanelC ラベル Panel:DOCK TOP
固定PanelD テキスト Panel:DOCK TOP
ここまでは、フォーム上で配置
自動Panel1 テキスト
自動Panel2 テキスト
という順に表示したいのです。

現在のプログラムだと、
自動Panel1 テキスト
自動Panel2 テキスト
固定PanelA ラベル Panel:DOCK TOP
固定PanelB テキスト Panel:DOCK TOP
固定PanelC ラベル Panel:DOCK TOP
固定PanelD テキスト Panel:DOCK TOP
の順に配置させてしまいます。

With Me.field_pnl(iRows - 1)
    'プロパティ設定
    .Name = iRows.ToString()
    .Location = New System.Drawing.Point(0, 279 + 85 * (iRows - 1))
    .Dock = System.Windows.Forms.DockStyle.Top
    .BorderStyle = BorderStyle.FixedSingle
    .Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
        Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
    .Size = New System.Drawing.Size(503, 86)
End With

Anchorを追加したのですが、表示位置は問題なかったのですが、横枠いっぱいには表示されませんでした。(Or System.Windows.Forms.AnchorStyles.Rightを削除したら、横枠いっぱいに表示され良かったのですが、表示位置が一番上に表示されてしまいました。)
解像度が違ってもSplitContainer1.Panel1内の横幅いっぱいに表示したいです。

イメージが伝わりましたでしょうか。

[ツリー表示へ]