如何删除在另一个事件处理程序中创建的TabControl?

时间:2012-04-12 19:44:38

标签: winforms c++-cli

所以我正在制作一个程序而且我碰壁了,因为我不知道如何将变量从一个方法传递到另一个方法。为了解释这种情况,我添加了代码:

1)我在formload上创建了一个toolStripMenuItem^ TestIsvalyti

    private: System::Void Form2_Load(System::Object^  sender, System::EventArgs^  e)
         {      
            MenuStrip^ menu = gcnew MenuStrip;
            menu->Location = Point(0,0);
            menu->Size = System::Drawing::Size(this->Width, 25);

            ToolStripMenuItem^ ElDienynas = gcnew ToolStripMenuItem;
            ElDienynas->Text = "El. Dienynas";
            menu->Items->Add(ElDienynas);
            Controls->Add(menu);

            //TESTUI
            ToolStripMenuItem^ TestIsvalyti = gcnew ToolStripMenuItem;
            TestIsvalyti->Text = "ISVALYTI";
            menu->Items->Add(TestIsvalyti);
            TestIsvalyti->Click += gcnew EventHandler(this, &Form2::TestIsvalyti_Click);
            Controls->Add(menu);
            //TESTUI

         }

2)我有一个事件处理程序,它创建一个TabControl^ ElDienynasTab

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

             TabControl^ ElDienynasTab = gcnew TabControl;
             ElDienynasTab->Location = Point(14, 40);
             ElDienynasTab->Size = System::Drawing::Size(768, 500);
             Controls->Add(ElDienynasTab);

             TabPage^ LankomumasPazymiai = gcnew TabPage;
             LankomumasPazymiai->Text = "Lankomumas | Pazymiai";
             ElDienynasTab->Controls->Add(LankomumasPazymiai);

             TabPage^ namuDarbai = gcnew TabPage;
             namuDarbai->Text = "Namu darbai";
             ElDienynasTab->Controls->Add(namuDarbai);       
         }

3)我为TestIsvalyti MenuStripItem创建了另一个事件处理程序,它必须从2)方法中删除ElDienynasTab,但我在那里碰壁,因为我不知道如何将变量传递给此事件处理程序。 / p>

             void TestIsvalyti_Click(System::Object^  sender, System::EventArgs^  e)
         {
              this->Controls->Remove(ElDienynasTab);
         }

请向我解释如何操作和/或添加一段代码。非常感谢你。

1 个答案:

答案 0 :(得分:1)

您有两个不同的功能,menuGrupe_ClickTestIsvalyti_Click。函数无法在其他函数中看到局部变量,因此如果您真的想要使用其他方法中的特定实例,则需要增加TabControl的可见性。

在表单中创建一个字段。

private: TabControl^ ElDienynasTab;

将TabControl存储在字段中而不是本地变量中。

this->ElDienynasTab = gcnew TabControl;

如果您使用设计器将组件拖放到表单上,您将看到这是遵循的模式。实际上,除非出于某种原因需要在Form_LoadmenuGrupe_Click调用中动态创建控件,否则您应该使用设计器来完成所有这些并且不要自己编写它。它会将初始化代码放入InitializeComponent()并为您创建适当的字段。