5

Windowsフォームプロジェクト。デザイナでのみ機能します(つまり、コンパイル前にマウスを使用します)。フォームと2つのパネルがあります。panel1はform1にドッキングされています(オプション-入力)。panel2もform1にドッキング(塗りつぶし)されています。また、panel2はpanel1の前にあります(後者は前者の後ろに隠れています)。私の問題は、panel2をドッキング解除して再度ドッキングすると、form1ではなくpanel1(panel1が親になる)にドッキングすることです。panel2の親を変更するにはどうすればよいですか?

これまでに私が理解した唯一の解決策は、panel2を切り取り(ctrl + x)、form1を選択してから(ctrl + v)panel2を貼り付けることですが、これにより、何らかの理由で、panel2コントロールとコード間のすべての接続が削除されます(たとえば、パネル2のボタンは、イベントを処理する関数がまだ存在しているにもかかわらず、機能しなくなりました)。

より良いアイデアはありますか?

4

3 に答える 3

8

クリップボードのコントロールを切り取るとイベントハンドラーが切断されるため、デザイナーで切り取りと貼り付けを行わないようにすることをお勧めします。

デザイナを使用しているため、 VisualStudioのメニューDocument Outlineからパネルを開きます。View - Other Windows矢印ボタンを使用して、コントロールの親またはドッキング順序を適切に設定します。

ドキュメントのアウトラインウィンドウは次のようになります。

ここに画像の説明を入力してください

于 2012-05-31T15:09:17.777 に答える
1

人々は私のコメントされた答えを気に入ったようですので、私はそれを答えとしてここに置いています

panel1のドッキングを解除してから、パネル2をpanel1からForm1の背景に移動できます。私もこれに苦労しました。それはいつも私の回避策でした、私もそれを切り取って貼り付けると多くの悩みの種になることに気づきました。デザイナファイルを使用して、コードで修正することもできます

于 2012-05-31T14:56:38.037 に答える
0

ドックを変更すると、パネルは親を変更できません!!! または私はあなたの問題を本当に理解していません。

しかし...親を変更したい場合。パネルのコントロールのリストのパネルを削除し、フォームのコントロールのリストに追加するだけです。

yourPanel.Controls.Remove(yourOtherPanel);
yourForm.Controls.Add(yourOtherPanel);
yourOtherPanel.Dock = .....;
于 2012-05-31T14:29:59.497 に答える