0

私の質問は説明するのは非常に簡単ですが、答えを得るのが難しいです. 私は2つのフォームを持っています。form1 には何もありませんが、form2 には内部にコントロールを含むパネルがあります。基本的に、form1 のボタンをクリックすると、パネルを form2 から form1 に複製/コピーし、すべてのコントロールとプロパティを同じに維持します。

ボタン クリック イベントで既に form2 のインスタンスを作成し、form2.designer.cs でパネルを公開して、form2 を開かずにアクセスできるようにしました。そのパネルを他のパネルと同じにするために、フォーム1にパネルを配置しようとしましたが、機能しませんでした。私はアイデアがなく、ネット上で何も見つかりません。誰でも私を助けてもらえますか?英語の間違いをお詫びします。

4

1 に答える 1

1

私には汚いハックのように聞こえますが、価値があるのは、form1 から form2 への参照を作成することです。「コピー」を実行すると、form1 のすべてのコントロールのリストが作成され、form1 がクリアされます。次に、コントロールを form2 に追加します。

このメソッドを form1 に追加します...form2 は、2 番目のフォームへの参照です。ボタンクリックのようなイベントでこれを起動します。

public void CopyControls()
{
    List<Control> ctrls = new List<Control>();
    foreach (Control c in this.Controls)
    {
        ctrls.Add(c);
    }
    this.Controls.Clear();
    form2.Controls.AddRange(ctrls.ToArray());
}

私は個人的にこれを行うことをお勧めしません。それは恐ろしいことです。あなたが望むものを達成するためのよりクリーンな方法があるに違いありません!

于 2013-10-08T12:56:15.467 に答える