0

イベントをメニュー項目にバインドしようとしています。コンパイルします。ただし、「about」メニュー項目をクリックしても何も起こりません。助けてください!

ref class MenuEventListener
{
public:
    MenuEventListener (System::Windows::Forms::Form ^form)
    {
        this->form = form;
        this->form->Click += gcnew EventHandler (this, &MenuEventListener::AboutClick);
    }

private:
    System::Windows::Forms::Form^ form;
    void AboutClick (Object^ sender, System::EventArgs^ args)
    {
        System::String ^text = gcnew System::String ("This is an about message");
        System::String ^cap = gcnew System::String("About");

        System::Windows::Forms::MessageBox::Show (
            (IWin32Window^) Control::FromHandle (form->Handle),
            text, cap, 
            System::Windows::Forms::MessageBoxButtons::OK,
            System::Windows::Forms::MessageBoxIcon::Question);
    }

};

// Called in the form constructor
menuEventListener = gcnew MenuEventListener (this);

ああ、誰かがイベントハンドラーの概念、特に「クラスイベント」を実際に使用する方法と、OnClick などのイベント発生関数との関係を説明できる場合。私はそれを得るが、かろうじて。そのような人は、誰かが親切に説明してくれることを望んでいます。

編集:これはaboutメニューのコンテキストです

TextEditorMenu::TextEditorMenu ()
{
    // Create components
    menu = gcnew System::Windows::Forms::MainMenu ();
    fileMenuItem = gcnew System::Windows::Forms::MenuItem ();
    helpMenuItem = gcnew System::Windows::Forms::MenuItem ();
    newMenuItem = gcnew System::Windows::Forms::MenuItem ();
    openMenuItem = gcnew System::Windows::Forms::MenuItem ();
    saveMenuItem = gcnew System::Windows::Forms::MenuItem ();
    saveAsMenuItem = gcnew System::Windows::Forms::MenuItem ();
    aboutMenuItem = gcnew System::Windows::Forms::MenuItem ();

    // Intizlize components
    fileMenuItem->Text = "File";
    helpMenuItem->Text = "Help";
    aboutMenuItem->Text = "About";
    newMenuItem->Text = "New File";
    openMenuItem->Text = "Open File";
    saveMenuItem->Text = "Save";
    saveAsMenuItem->Text = "Save As";
4

0 に答える 0