none
ウィンドウサイズによってFlowLayoutPanel内のコントロールが表示されない RRS feed

  • 質問

  • 初めて投稿いたします。VisualStudio2005(.NET Framework2.0、 C#)のFlowLayoutPanelについて質問させて下さい。

    FlowLayoutPanelのPadingプロパティを設定し、ウィンドウサイズをスクロールバーが表示されないサイズから、丁度縦スクロールバーが表示されるサイズに変更すると、FlowLayoutPanel内の自動配置されたコントロールのいくつかがスクロールバーを操作しても表示されない現象が起こっています。

    さらにウィンドウサイズを小さくしていけば、自動配置されたコントロールが全てスクロールバー操作により表示されることが可能となりますが、ウィンドウの高さに影響されずにFlowLayoutPanel内のコントロールを全てスクロールバー操作により表示できるようにする方法があれば教えてください。

    以下に状況を再現させるサンプルの実行手順を記述します。

    1. VisualStudio2005でWindowsアプリケーションの新規プロジェクトを作成

    ・作成したFormのサイズをWidth=340, Height=127 に設定

    2. Form内にFlowLayoutPanelを作成

    作成したFlowLayoutPanelのプロパティを以下のように変更

    ・Dock : Fill に設定

    ・AutoScroll : True に設定

    ・Pading : Right=20 に設定

    3. FlowLayoutPanel内にPanelを8個作成

    ・作成した8個の各PanelのサイズをWidth=150, Height=19 に設定

    ・作成した8個の各PanelのBackColorを Desktop に設定(識別しやすくするため)

    4. 上記のプロジェクトをビルドし実行

    5. 表示されたFormの上端または下端をつかんで高さを縮める(1ピクセル分程度)

    6. 縦スクロールバーが表示されるが、Panelが4個までしかスクロールできない。

    7. 再度、Formの上端または下端をつかんで高さを縮める(1ピクセル分程度)

    8. 8個のPanelをスクロールバーを操作して表示することが可能。

    以上です。宜しくお願いします。

    2007年2月19日 12:52

すべての返信

  • 私のところでも再現します。(VB2005)最初2列で表示されてて(1列4個)、その4個分の高さをほんと1ピクセルほど縮めるとなります。

    どうも2列の時の高さからスクロールバーの設定をして、表示は1列になるような感じですね。2列から1列になるのはスクロールバーの幅分狭くなるからでしょう。そこのところの計算(処理の順序?)がおかしいと私は予想します。

    フィードバック行きかな?

     

    2007年2月20日 11:54
  • .NET Framework2.0の不具合ですかね。

    Windows2000とWindowsXPの環境で確認してみましたが、どちらも再現しました。

    また、TabControlの中にFlowLayoutPanelを配置して確認してみましたが、やはり再現しました。

    ただ、再現した状態からタブの切り替えを行い、再度FlowLayoutPanelが配置されたタブに戻ると

    なぜか正常な状態になっていることも確認しました。

    この情報を「Visual Studioフィードバック」へ報告してみます。

    おっちいさん、ありがとうございました。

     

    2007年2月22日 2:47