2011-09-10 11 views
3

ボタンをクリックするたびにパネルをオーバーラップさせようとしています。特定のパネルが表示されます。Visual C#/ WinFormsパネル

しかし、パネルが重なっていないため、この仕事は非常に難しいです。

ex。私はパネル1及びパネル2ています

私は同じ位置にそれらを配置するたびに、私はパネル1、 としてパネル2は同じにする... は時々、パネル2は、パネル1のメンバーになり、私が設定したときに真のパネル2に対するパネル1の可視性もまた現れる。

私が望むのは、2つのパネルがお互いに重なっていることです。

は「ところで、私はパネルを非表示解除することは、私の最善のアプローチであるかもしれない、その隠ぺいを考えた理由です垂直タブを作ってるんだ。

パネルが重なっ作ることが可能ですか?

答えて

4

デザイナーがあなたと戦っていると、それらが重なってしまいます。下のパネルが重なっているパネルを吸い上げるのを止めるには、ちょっとした工夫が必要です。重なり合ったパネルを左上にいくらかずらして重ねるようにします。次に、フォームコンストラクタにコードを追加して適切な場所に配置します。

public Form1() { 
     InitializeComponent(); 
     panel2.Location = panel1.Location; 
     panel2.Size = panel1.Size; // optional 
    } 

もう1つの方法は、[ビュー+その他のWindows +ドキュメントレイアウト]です。内側のパネルを外側のコンテナ(フォーム)にドラッグアンドドロップできます。ただし、Locationプロパティは手作業で編集する必要があります。

+0

+1:これは、私がいつも別の 'UserControl'オプションをインスタンス化するという手間を掛けたくないときに、私はいつも*隠された*パネルを隠してしまったことです。パネルをオーバーラップさせるデザイナーにやさしい方法があればうれしいでしょう...隠されたタブのようなものです。 – IAbstract

+0

@IAbstract - これをチェック:http://stackoverflow.com/questions/2340566/creating-wizards-for-windows-forms-in-c/2342320#2342320 –

0

それ

あなたが直面している問題は、GUIエディタがパネルをコンテナとして扱うことです(それは本当です)。また、パネル内に何か(他のパネルを含む)を配置する限り、それはこのコンテナに「入れ子になっています」

この問題を回避するには、まず1つのパネルを配置し、適切に位置/サイズを設定します。それを右クリックし、「コントロールをロック」を選択します。これにより、現在のフォームコントロールがすべてロックされ、ネストされたり、既存のコンテナ内に置かれたりすることなく、パネルを含む新しいコントロールを直接パネル上に配置できます。

もちろん、コントロールは重なり合う可能性があります。オーダーやコントロールの作成のみを考慮し、フォームのzオーダーを定義します。後で追加され、後で描画されるため、これらのコントロールの上に配置されます。以前に追加されました。

編集:残念ながら、私は私の答えで完全に正しかったわけではありませんでした。パネルをロックしていても、コントロールパネル内のコントロールを完全に吸い上げることはできません。しかし、部分的に重なり合っている場合は、両方のコンテナが同じレベルの深度で作成されるので、質問で質問されたように、重なったパネルの場合に問題は存在しません。

+2

ロックコントロールがこのように機能するといいですね。それは実際には、ロックされたパネルはまだ重なったパネルを吸う。それを試してみてください。 –

+0

ありがとうございます!私はそれがロックの制御を行う方法を参照してください:)))Btw、正解として正しい答えをマークする方法? –

+0

@Hand Passant:うーん...答えを投稿する前にチェックしましたが、今は時にはうまくいかないことがあります。いずれにしても、パネルが既存のコンテナ内に完全に配置されている場合にのみ吸引され、重複は可能です。しかし、私は自分の答えを修正します –

0

PanelにはLocationというプロパティがあり、ニーズに合わせて変更できます。正しい親が与えられるようにPanelを配置する限り、後でLocationプロパティを変更して位置を変更することができます。設計コードをコンストラクタなどに配置する必要はありません。

正しい親にパネルを配置するには、親を選択して、フォームに手動でドラッグするのではなく、ツールバーのPanelコントロールをダブルクリックします。実際にこのデザイナーと戦う必要はありません。

関連する問題