2

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

1)我创建了一个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,但我在那里碰壁了,因为我不知道如何将变量传递给这个事件处理程序。

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

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

4

1 回答 1

1

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

在表单中创建一个字段。

private: TabControl^ ElDienynasTab;

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

this->ElDienynasTab = gcnew TabControl;

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

于 2012-04-12T22:40:08.143 回答