0

c# 2.0 .NET Windows フォームでの作業

表示したいタブがあるページを参照している別の Windows フォーム ページで、Windows フォームの既存のタブを表示したいと思います。

4

1 に答える 1

1

あなたの問題を正しく理解しているかどうかはわかりませんが、ここに私が得たものがあります: タブ コントロールがある FormA というウィンドウ フォームがあり、タブ ページには TextBoxes などのコントロールがさらに含まれている可能性があります。そのすべての子コントロールは、FormB などの新しいフォームに移動されます。MOVED とは、新しいインスタンスではなく、FormA のタブ コントロールのインスタンスそのものを意味します。これは、ユーザーが TabPage 内の TextBox などに何かを入力した場合、コントロール全体が FormB に移動したときに、ユーザーが入力したテキストであっても FormB に存在する必要があることを意味します。

上記のシナリオが正しい場合、上記の誰かが指摘したように、これは .Net では許可されていません。1 つのコントロールが 1 つのコンテナーでホストされているため、2 つの場所で同時に表示することはできません。

ただし、しばらくの間、別のフォームでコントロールを表示する (使用するのではなく) ことに興味があるかもしれません。最初のフォームからコントロールを完全に切り取っても問題ありません。FormA が FormB をモーダル ウィンドウとして開き、独自の Tab コントロールをそれに渡し、ユーザーが FormB のコントロールを使用してからモーダル Form FormB を閉じ、Tab コントロールが元の位置に戻るシナリオを考えます。

これは非常に可能です。フォーム A のコンテナーからタブ コントロールを削除し、それをフォーム B に渡します。フォーム B はそれをコンテナーに追加して表示し、その逆も同様です。

たとえば。ボタンで言う FormA をクリックすると、次のように記述できます。

        FormB myForm = new FormB();
        this.Controls.Remove(this.tabControl1);
        myForm.AddTabControlToPanel(this.tabControl1);
        myForm.Show();

FormBには関数があります

    public void AddTabControlToPanel(TabControl tc)
    {
        panel1.Controls.Add(tc);
        tc.Left = 10;
        tc.Top = 10;
        tc.Width = 200;
        tc.Height = 200;
    }
于 2012-07-03T08:32:00.687 に答える