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

と の 2 つの異なる機能がmenuGrupe_ClickありTestIsvalyti_Clickます。関数は他の関数内のローカル変数を見ることができないため、TabControl別のメソッドからその特定のインスタンスを本当に使用したい場合は、の可視性を高める必要があります。

フォームにフィールドを作成します。

private: TabControl^ ElDienynasTab;

ローカル変数の代わりにフィールドに TabControl を格納します。

this->ElDienynasTab = gcnew TabControl;

デザイナーを使用してコンポーネントをフォームにドラッグ アンド ドロップすると、このパターンに従っていることがわかります。Form_Load実際、 and呼び出し内でコントロールを動的に作成する必要がある何らかの理由がない限りmenuGrupe_Click、これらすべてにデザイナーを使用し、自分で記述しようとしないでください。初期化コードを入れInitializeComponent()て、適切なフィールドの作成を処理します。

于 2012-04-12T22:40:08.143 に答える