我有一个按钮和几个PictureBox。 PictureBox挂钩到MouseHover和MouseLeave事件。 OnMouseEnter / OnMouseLeave按钮在PictureBox的特定位置显示/隐藏。 Button的目的是在单击时显示OpenFileDialog。 事件已分配;点击(视觉上);但是它没有达到“断点/点击方法”。 我可以弄清楚,如果我将Button移出PictureBox区域(在窗体的其他地方);加载表单后立即启用并显示它;它将达到断点。 任何线索为什么会发生这种情况? 任何帮助,将不胜感激。 预先感谢
更新:在下面添加了我的代码。
private void PicBox_MouseEnter(object sender, EventArgs e)
{
var pic = sender as PictureBox;
ShowButton_LoadPhoto(pic);
SelectedPictureBoxName = pic.Name;
}
private void PicBox_MouseLeave(object sender, EventArgs e)
{
btn_LoadPhoto.Visible = false;
}
private void ShowButton_LoadPhoto(PictureBox pic)
{
var locX = pic.Location.X + pic.Size.Width - btn_LoadPhoto.Size.Width - 3;
var locY = pic.Location.Y + pic.Size.Height - btn_LoadPhoto.Size.Height - 3;
btn_LoadPhoto.Location = new Point(locX, locY);
btn_LoadPhoto.Enabled = true;
btn_LoadPhoto.Show();
}
private void BtnLoad_Click(object sender, EventArgs e)
{
MessageBox.Show("Test");
}
Designer类别:
this.btn_LoadPhoto.Click += new System.EventHandler(this.BtnLoad_Click);
答案 0 :(得分:0)
好的;这有点明显;却很容易错过。
我已经以编程方式创建了按钮,并手动设置了所有设置,使其尽可能精确。这样可以更轻松地找出问题背后的原因。
问题:每当“ PicureBox.OnMouseLeave”出现时; Button.Click事件将变为“不可用” /“覆盖”(即使按钮可见且位于PictureBox顶部)。
注意:有趣的是;使用新的(以编程方式创建的)按钮; IDE将显示不同的行为;进一步的病房让用户了解发生这种情况的原因。
答案::OnMouseLeave事件与Click事件冲突。
备注:与以前的方法不同(“在表单上拖放按钮”);通过以编程方式创建Button;每当鼠标移至另一个控件时(在这种情况下,如果用户希望单击按钮),IDE都将隐藏按钮。 先前;这不会发生。该按钮将显示在控件前面。但是Click事件不会触发(之间也不会断点)。
感谢帮助和快速答复。