从另一个Form C ++ / CLI引用TabControls

时间:2012-04-16 08:41:55

标签: c++ winforms reference c++-cli

我正在尝试将此标签式浏览器从visual basic转换为C ++。 我试图从Form1.h引用Tab控件。 这是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);

         }

尝试创建另一个标签的第二个表单上的代码是:

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 ++中做同样的事情?

1 个答案:

答案 0 :(得分:1)

Visual Basic提供项目中每个类的默认实例。当您说Form1.tabControl1时,您实际上正在获取Form1的特定全局实例,并访问其上的tabControl1字段。

添加一种方法将Form1的实例发送到第二个表单,并使用它而不是Form1。像将Form1的实例传递给构造函数中的第二个表单这样的简单操作可能会有所帮助。