Click事件处理程序未被调用

时间:2013-03-26 16:43:43

标签: c++-cli windows-forms-designer

我正在使用或“学习”C ++ / CLI,因为我喜欢GUI的外观,而且我试图在鼠标悬停在图片上并且当它不在图片中时触发某些事件,但它没有不起作用,唯一有效的事件是当鼠标点击图片时。

我的代码低于

void pictureBox1_MouseEnter(Object^ sender, System::Windows::Forms::MouseEventArgs^ ) {
    label1->Text = String::Concat( sender->GetType(), ": Enter" );
}

void pictureBox1_MouseHover(Object^ sender,  System::Windows::Forms::MouseEventArgs^ ) {
    label1->Text = String::Concat( sender->GetType(), ": MouseHover" );
}

void pictureBox1_MouseLeave(Object^ sender,  System::Windows::Forms::MouseEventArgs^ ) {
    label1->Text = String::Concat( sender->GetType(), ": MouseLeave" );
}

private: System::Void pictureBox1_Click(System::Object^  sender, System::EventArgs^  e) {
    label1->Text = String::Concat( sender->GetType(), ": Click" );
}

2 个答案:

答案 0 :(得分:0)

也许您忘了将这些方法添加为回调

答案 1 :(得分:0)

如果这是您的整个代码,那么您所做的就是定义一些方法。用户界面不知道当这些事件发生时它应该调用它们。

您需要做的是在各种对象上添加事件处理程序。从本地方法创建委托,并将其(使用+=运算符)添加到事件中。

MouseEnterMouseHoverMouseLeave都定义为EventHandler,而不是MouseEventHandler。这意味着该方法应采用EventArgs,而不是MouseEventArgs,因此请切换方法声明。

// Do this in the constructor.
this->pictureBox1->MouseEnter += gcnew EventHandler(this, &Form1::pictureBox1_MouseEnter);
this->pictureBox1->MouseHover += gcnew EventHandler(this, &Form1::pictureBox1_MouseHover);
this->pictureBox1->MouseLeave += gcnew EventHandler(this, &Form1::pictureBox1_MouseLeave);

this->pictureBox1->Click += gcnew EventHandler(this, &Form1::pictureBox1_Click);