2017-02-06 6 views
0

実行時に、コントロールを表示するかどうかを決定する必要があります。 私はこのフォームに取り組んでいます: My form隠しコントロールを削除する

をいくつかのケースでは、私はすべてのコントロールが、「行のフォントサイズ」のラベル、そのコンボボックスおよび「閉じる」ボタンを非表示したいと思います。そうするとき、私は残っているコンポーネントを移動し、メインフォームのサイズを変えて見栄えがいいようにしたい。

コメントで示唆したように、私はPanelでFlowLayoutPanelを使用しようとしました。 CheckedBoxListの1つのパネル、ラベルとコンボボックスを同じ行に残したいので、各ペア(ラベル、コンボボックス)ごとに1つのパネル。このソリューションで

、私は2つの問題があります。今、代わりに他の初期の部品の

  • 自動リサイズがもはや機能していない私はパネルを非表示にする必要があり:I場合は管理する

    1. 以上のコンポーネントをメインフォームのサイズを変更すると、内部コンポーネントのサイズが変更されなくなります。

    また、私はTableLayoutPanelを見ました。そして、私は各行に異なる数の列を持っているので、私にはオプションがありません。最初の行にはCheckedBoxListのみがあり、2行目にはラベルとコンボボックスがあります。

    この問題を解決し、すべてのコントロールの自動サイズ変更機能を維持するための提案はありますか?

  • +0

    :だから、このようになります。スペース)。しかし、これと同等のものがwinformsアプリではどういうものか分かりません:/ –

    +0

    したがって、最も明白なソリューション、FlowLayoutPanelを試しました。何が起こったのですか?あなたはツールボックスを見て、それらのコントロールが何をしているのか見ましたか? 1時間過ごして、動かないときに戻ってきてください。 –

    +0

    @HansPassant私はFlowLayoutPanelを推奨どおりに使っていましたが、まだ正しく使用しなければなりません。 – Mhd

    答えて

    0

    Winformsでは、バックグラウンドでグリッドの種類のレイアウトを使用します。だからあなたはレイアウトを自分でコントロールしなければなりません。これを行う最も簡単な方法は、RefreshLayout()というメソッドを作成し、このメソッドをボタンを非表示にするか、または表示することです。だからあなたの条件は次のようになります。

    if (condition) 
    { 
        buttonDown.Hide(); 
        RefreshLayout(); 
    } 
    

    RefreshLayout()方法では、あなたがボタンサイズによって上下にすべてのコントロールボタンの下に移動し、ボタンが非表示または表示されているかどうかを判断する必要があります。また、フォーム自体の高さを変更することもできます。私はそれを隠し、余分を残さない(あなたが必要とする正確に何をしている値のいずれかが折りたたまれて、コントロールが可視性を設定する種類の列挙型を使用することをWPFに知っ

    public void RefreshLayout() 
    { 
        int offset; 
    
        if (buttonDown.Visible) 
        { 
         // The button is visible 
         offset = buttonDown.Height; 
        } 
        else 
        { 
         // The button is hidden 
         offset = buttonDown.Height * -1; 
        } 
    
        // For each control under the button... 
    
        control1.Location.Y = control1.Location.Y + offset; 
        control2.Location.Y = control2.Location.Y + offset; 
        // and so forth, for each control 
    } 
    
    +0

    移動するコントロールがほとんどない場合は、この提案を使用することをお勧めします。私は維持するために比較的複雑な形をしています。私は質問 – Mhd

    +0

    @Mhdを編集しました。コントロールがたくさんある場合は、パネルを作成し、コントロールをパネルに移動して、パネルを上下に動かしてください。 1つのコントロール – Icemanind

    関連する問題