所以我正在制作一个程序而且我碰壁了,因为我不知道如何将变量从一个方法传递到另一个方法。为了解释这种情况,我添加了代码:
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);
}
请向我解释如何操作和/或添加一段代码。非常感谢你。
答案 0 :(得分:1)
您有两个不同的功能,menuGrupe_Click
和TestIsvalyti_Click
。函数无法在其他函数中看到局部变量,因此如果您真的想要使用其他方法中的特定实例,则需要增加TabControl
的可见性。
在表单中创建一个字段。
private: TabControl^ ElDienynasTab;
将TabControl存储在字段中而不是本地变量中。
this->ElDienynasTab = gcnew TabControl;
如果您使用设计器将组件拖放到表单上,您将看到这是遵循的模式。实际上,除非出于某种原因需要在Form_Load
和menuGrupe_Click
调用中动态创建控件,否则您应该使用设计器来完成所有这些并且不要自己编写它。它会将初始化代码放入InitializeComponent()
并为您创建适当的字段。