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

FlowLayoutPanelを使用)

分類:[.NET]

昨年末にFlowLayoutPanelについて質問したものです。
その節はありがとうございました。

今回もFlowLayoutPanelについて質問させていただきます。

↓パネル
г――――――――――――¬
| ラベル コンボボックス |
|     チェックボックス|
L_____________」

このようにラベル、コンボボックス、
チェックボックスがパネルに貼ってあります。

コンボボックス、
チェックボックスをFlowLayoutPanelに貼り付け、
最大化したときに
下記のようにしたいです。

↓パネル
г――――――――――――――――――――¬
| ラベル コンボボックス チェックボックス|
L_____________________」

このときのパネルのサイズ変更について
お聞きしたいです。
最大化したとき(FlowLayoutPanelに配置したコントロールが一行になったとき)
パネルのサイズを変更したいのですが、
このようなことは可能でしょうか?
可能な場合、どのようにすればいいか教えていただきたいです。

今現在の状態は最大化すると
↓パネル
г――――――――――――――――――――¬
| ラベル コンボボックス チェックボックス|
|                     |
L_____________________」
このように一行分大きくなっています。

わかりにくく、申し訳ありませんが
よろしくお願いいたします。
■No29554に返信(陽菜さんの記事)

AutoSize= True

AutoSizeMode=GrowAndShrink
■No29557に返信(shuさんの記事)
> ■No29554に返信(陽菜さんの記事)
>
> AutoSize= True
> と
> AutoSizeMode=GrowAndShrink
> で

ありがとうございます。
やってみましたが、
FlowLayoutPanelはAutoSizeされているようですが、
PanelのほうはAutoSizeされず、
FlowLayoutPanelも実行されず、
↓パネル
г――――――――――――¬
| ラベル コンボボックス |
|     チェックボックス|
L_____________」
この形のままになってしまいました。
なにがいけないのでしょうか・・・

ちなみに・・・PanelもFlowLayoutPanelも
AnchorはTop,Left,Rightになっています。
これが原因でしょうか?
■No29558に返信(陽菜さんの記事)
> ■No29557に返信(shuさんの記事)
>>■No29554に返信(陽菜さんの記事)
>>
>>AutoSize= True
>>と
>>AutoSizeMode=GrowAndShrink
>>で
>
> ありがとうございます。
> やってみましたが、
> FlowLayoutPanelはAutoSizeされているようですが、
> PanelのほうはAutoSizeされず、
> FlowLayoutPanelも実行されず、
> ↓パネル
> г――――――――――――¬
> | ラベル コンボボックス |
> |     チェックボックス|
> L_____________」
> この形のままになってしまいました。
> なにがいけないのでしょうか・・・
>
> ちなみに・・・PanelもFlowLayoutPanelも
> AnchorはTop,Left,Rightになっています。
> これが原因でしょうか?

いろいろやってみたら、
最大化してコンボボックスの値を変更すると
思っている動作が出来ることがわかりました。
また、元に戻してコンボボックスの値を変更すると
思っている動作が出来ます。
ですが、

最大化したらパネルをコントロールにあわせて縮小
元に戻したらパネルをコントロールにあわせて拡大

という動作がどうしても出来ません。
なにかいい方法はないでしょうか?

パネルと言っていますが、
パネルを継承した自分自身で作ったコントロールです。
また、パネルだけでなく、
グループボックスを継承した自分自身で作ったコントロールも
同様の動作をしたいです。

よろしくお願いいたします。
■No29558に返信(陽菜さんの記事)
Panel1 ・・・ Anchor = Top + Left + Right
 ├Panel2 ・・・ Dock = left
 │└Label
 └FlowLayoutPanel1・・・Dock = Top

にして
Private Sub FlowLayoutPanel1_Resize(sender As Object, e As System.EventArgs) Handles FlowLayoutPanel1.Resize
Panel1.Height = FlowLayoutPanel1.Height
End Sub
のコードを追加
とかどうでしょう?
■No29560に返信(shuさんの記事)
> ■No29558に返信(陽菜さんの記事)
> Panel1 ・・・ Anchor = Top + Left + Right
>  ├Panel2 ・・・ Dock = left
>  │└Label
>  └FlowLayoutPanel1・・・Dock = Top
>
> にして
> Private Sub FlowLayoutPanel1_Resize(sender As Object, e As System.EventArgs) Handles FlowLayoutPanel1.Resize
> Panel1.Height = FlowLayoutPanel1.Height
> End Sub
> のコードを追加
> とかどうでしょう?

ありがとうございます。
質問なのですが、FlowLayoutPanel1・・・Dock = Top
というのはなぜTopなのでしょうか?
Topに設定すると、
Panel2の上にかぶさってしまい、
Labelが見えなくなってしまいます。

言語がC#なのですが、
private void flowLayoutPanel1_Resize(object sender, EventArgs e)
{
panel1.Height = flowLayoutPanel1.Height;
}
これで間違いないでしょうか?
2012/01/06(Fri) 13:20:54 編集(投稿者)

■No29561に返信(陽菜さんの記事)

> ありがとうございます。
> 質問なのですが、FlowLayoutPanel1・・・Dock = Top
> というのはなぜTopなのでしょうか?
> Topに設定すると、
> Panel2の上にかぶさってしまい、
> Labelが見えなくなってしまいます。
Panel2を最背面に移動するか、FlowLayoutPanel1を最前面に移動してください。
アウトライン表示だと逆でしたmm


> 言語がC#なのですが、
> private void flowLayoutPanel1_Resize(object sender, EventArgs e)
> {
> panel1.Height = flowLayoutPanel1.Height;
> }
> これで間違いないでしょうか?
大丈夫です。イベントへの割り当ては大丈夫ですよね?
■No29562に返信(shuさんの記事)
> 2012/01/06(Fri) 13:20:54 編集(投稿者)
>
> ■No29561に返信(陽菜さんの記事)
>
>>ありがとうございます。
>>質問なのですが、FlowLayoutPanel1・・・Dock = Top
>>というのはなぜTopなのでしょうか?
>>Topに設定すると、
>>Panel2の上にかぶさってしまい、
>>Labelが見えなくなってしまいます。
> Panel2を最背面に移動するか、FlowLayoutPanel1を最前面に移動してください。
> アウトライン表示だと逆でしたmm
>
>
>>言語がC#なのですが、
>> private void flowLayoutPanel1_Resize(object sender, EventArgs e)
>> {
>> panel1.Height = flowLayoutPanel1.Height;
>> }
>>これで間違いないでしょうか?
> 大丈夫です。イベントへの割り当ては大丈夫ですよね?

ありがとうございます!
パネルのほうはうまくいきました。
後は細かい修正を入れれば大丈夫だと思います。

また何かありましたら質問させていただきますので
よろしくお願いいたします。
解決済み!

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