2012-04-12 92 views
2

所以我正在製作一個程序,我碰到了一面牆,因爲我不知道如何將一個變量從一個方法傳遞到另一個方法。爲了解釋這種情況,我添加了代碼:如何刪除在另一個事件處理程序中創建的TabControl?

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)I有一個事件處理程序,它創建一個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)I創建另一事件處理程序TestIsvalyti MenuStripItem,其具有從2)方法除去ElDienynasTab,但是由於我不知道如何將變量傳遞給這個事件處理函數,所以我在那裏碰壁了。

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

請向我解釋如何做和/或添加一段代碼。非常感謝你。

回答

1

您有兩個不同的功能,menuGrupe_ClickTestIsvalyti_Click。函數在其他函數中看不到局部變量,因此如果您確實想從另一種方法使用該特定實例,則需要增加TabControl的可見性。

在窗體中創建一個字段。

private: TabControl^ ElDienynasTab; 

將TabControl存儲在字段中而不是局部變量。

this->ElDienynasTab = gcnew TabControl; 

如果您使用設計器將組件拖放到窗體上,您會發現這是遵循的模式。事實上,除非出於某種原因,您需要在和menuGrupe_Click調用中動態創建控件,否則您應該使用設計器來完成所有這些工作,而不是試圖自己編寫它。它會將初始化代碼放入InitializeComponent()中,併爲您創建適當的字段。

+0

謝謝,這有幫助。 但是如果我需要在獲取信息時創建對象? 例如:我發送一個查詢到數據庫中,我得到了ppl的名字,姓氏和數字,那是hm ppl。 (而我只在點擊按鈕時這樣做) – Rokas 2012-04-13 15:54:33

+0

@Rokas這是一個非常模糊的問題。這真的取決於你如何構建你的用戶界面。如果所有的數據都可以放在一個現有的控件中,比如GridView,那麼你可以用數據填充控件。如果您需要爲每一塊數據動態創建並添加一個全新的控件,那麼您至少應該將控件創建邏輯合併爲一個單獨的函數,並只傳入所需的唯一數據。如果你有一個更具體的問題,隨意問Stack Overflow的另一個問題。 – 2012-04-13 16:31:13

+0

非常感謝:] – Rokas 2012-04-15 20:19:34

相關問題