0

このタブ付きブラウザを Visual Basic から C++ に変換しようとしています。Form1.h からタブ コントロールを参照しようとしています。Form1.h のコードは次のとおりです。

    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
             String^ title = String::Concat("TabPage ",(tabControl1->TabCount + 1).ToString());
             tab^ newtab = gcnew tab;
             newtab->Show();
             newtab->TopLevel = false;
             newtab->Dock = System::Windows::Forms::DockStyle::Fill;
             TabPage^ myTabPage = gcnew TabPage(title);
             myTabPage->Controls->Add(newtab);
             tabControl1->TabPages->Add(myTabPage);

         }

別のタブを作成しようとしている 2 番目のフォームのコードは次のとおりです。

private: System::Void newTabToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {

         tab^ newtab = gcnew tab;
         newtab->Show();
         newtab->TopLevel = false;
         newtab->Dock = System::Windows::Forms::DockStyle::Fill;
         TabPage^ myTabPage = gcnew TabPage();
         myTabPage->Controls->Add(newtab);
         tabControl1->TabPages->Add(myTabPage);
     }

Visual Basic で必要なのは、Form1 を追加することだけです。そのように最初に...:

//Original
tabControl1.TabPages.Add(myTabPage);
//New
Form1.tabControl1.TabPages.Add(myTabPage);

これと同じことを C++ で行うにはどうすればよいでしょうか。

4

1 に答える 1

1

Visual Basic は、プロジェクト内の各クラスの既定のインスタンスを提供します。と言うとForm1.tabControl1、実際には Form1 の特定のグローバル インスタンスを取得し、その上の tabControl1 フィールドにアクセスしています。

Form1 のインスタンスを 2 番目のフォームに送信する方法を追加し、代わりにそれを使用しますForm1。コンストラクターで Form1 のインスタンスを 2 番目のフォームに渡すような単純な方法で、おそらくうまくいくでしょう。

于 2012-04-16T19:27:29.427 に答える