【问题标题】:C# Unable to Perform Mouse Click (WinForms)C# 无法执行鼠标单击 (WinForms)
【发布时间】:2019-05-15 16:55:53
【问题描述】:

我有一个按钮和几个图片框。 图片框与 MouseHover 和 MouseLeave 事件挂钩。 OnMouseEnter/OnMouseLeave 按钮在 PictureBox 的特定位置显示/隐藏。 Button 的目的是在单击时显示 OpenFileDialog。 事件被分配;它点击(视觉上);但是它没有达到断点/单击方法。 如果我将按钮从图片框区域(表单上的其他位置)中取出,我可以想到;表单加载后立即启用并显示它;它将到达断点。 任何线索为什么会发生这种情况? 任何帮助,将不胜感激。 提前致谢

更新:在下面添加了我的代码。

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");
}

设计师类:

    this.btn_LoadPhoto.Click += new System.EventHandler(this.BtnLoad_Click);

【问题讨论】:

  • 请提供代码。
  • 更具体地说:请将您分配 BtnLoad_Click 的代码添加到实际的点击事件。
  • 您能否也显示相关的 XAML(假设它是 WPF)?
  • @RolandDeschain:对不起。忘了说这是 WinForms。
  • @SamW:添加了 Designer 类的代码行。

标签: c# events button click mouseevent


【解决方案1】:

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

我以编程方式创建了按钮,并尽可能准确地手动设置所有内容。这样更容易找出问题背后的原因。

问题:每当“PictureBox.OnMouseLeave”发生时; Button.Click 事件变得不可用/被覆盖(即使按钮是可见的并且位于 PictureBox 的顶部)。

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

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

备注: 不同于之前的方式(“在表单上放置一个按钮”);通过以编程方式创建按钮;每当鼠标移动到另一个控件时,IDE 就会简单地隐藏按钮(在这种特定情况下;如果用户想要单击按钮)。 之前;这不会发生。按钮将在控件前面可见。但是 Click 事件不会触发(也不会触发任何断点)。

感谢您的帮助和快速回复。

【讨论】:

    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多