C#无法执行鼠标单击(WinForms)

时间:2018-12-14 12:02:34

标签: c# events button click mouseevent

我有一个按钮和几个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);

1 个答案:

答案 0 :(得分:0)

好的;这有点明显;却很容易错过。

我已经以编程方式创建了按钮,并手动设置了所有设置,使其尽可能精确。这样可以更轻松地找出问题背后的原因。

问题:每当“ PicureBox.OnMouseLeave”出现时; Button.Click事件将变为“不可用” /“覆盖”(即使按钮可见且位于PictureBox顶部)。

注意:有趣的是;使用新的(以编程方式创建的)按钮; IDE将显示不同的行为;进一步的病房让用户了解发生这种情况的原因。

答案::OnMouseLeave事件与Click事件冲突。

备注:与以前的方法不同(“在表单上拖放按钮”);通过以编程方式创建Button;每当鼠标移至另一个控件时(在这种情况下,如果用户希望单击按钮),IDE都将隐藏按钮。 先前;这不会发生。该按钮将显示在控件前面。但是Click事件不会触发(之间也不会断点)。

感谢帮助和快速答复。