イベントをメニュー項目にバインドしようとしています。コンパイルします。ただし、「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";