繁体   English   中英

使用图片框作为按钮,如何忽略/禁用双击事件?

[英]Using a Picture Box as a button, how do I ignore/disable double-click events?

使用图片框作为按钮时遇到一些困难。 我想拥有自定义的按钮图形,而不是使用普通的Windows窗体的Button控件。

它工作得很好,除了快速按下单个按钮时按钮似乎滞后。 我希望每次单击“图片框”时都立即调用OnClick方法,但是它似乎正在注册一个双击事件,即使我没有使用该事件也是如此。

短版是我想要的:

  • (理想)禁用双击事件,因为它似乎是控件在每次交替单击图片框时都在等待的内容,而我从不使用它。 要么,
  • (可接受)编写一个通用DoubleClick事件,我可以将其用于所有打算用作按钮的图片框。

我确实编写了一个测试程序,该程序实际上表明正在发生的事情。 我编写了一个MouseUp事件,该事件使计数器增加1,并且还添加了一个OnClick,即使该计数器使其他计数器也增加1。当快速单击链接到这些事件的图片框时,MouseUp计数器恰好是OnClick计数器的两倍。

然后,我添加了一个DoubleClick事件,该事件调用了OnClick事件。 这虽然不理想,但可以很好地解决问题。 如果有一种方法可以编写所有按钮都可以使用的通用DoubleClick事件,那么我认为这是可以接受的。

现在我的DoubleClick事件只是

    private void pb_DoubleClick(object sender, EventArgs e)
    {
        pbOK_Click(sender, e);  //This needs to be generic
    }

我想至少将DoubleClick行替换为

    private void pb_DoubleClick(object sender, EventArgs e)
    {
        (Sender.ToString)_Click(sender, e); // Doesn't work quite like this.
    }

我可以为每个Picture Box分别编写一个特殊的DoubleClick事件,但这并不理想,而且看起来很麻烦,所以我宁愿在不需要时也不这样做。

这是我第一个发布的问题,感谢所有花时间阅读此问题的人。 任何建议将不胜感激。

编辑:此程序是为Windows CE开发的,因此对象的属性和事件选项非常有限。 我可能仍会丢失一些内容,但据我所知,按钮的“属性”列表直接从GenerateMember转到Location,而没有可用的Image选项。 对于未在原始帖子中说明目标平台,我深表歉意。

这是通过Control.SetStyle()方法完成的,如下所示:

using System;
using System.Windows.Forms;

class MyButton : PictureBox {
    public MyButton() {
        this.SetStyle(ControlStyles.StandardDoubleClick, false);
    }
}

好吧,我原来的答案是垃圾。 我的更新:

这是有关如何获取控件的链接方法名称: 链接

在链接中有一个控件c。 要获取您的控件(发送者),请使用以下命令:

PictureBox picbox = (PictureBox) sender;

接下来,使用字符串(您的class.Method.Name)调用方法: 链接

现在应该可以了。 希望能。

您为什么不创建自己的控件? 这样,您无需执行任何操作即可获得所需的行为。

using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public class ButtonPictureBox : PictureBox
    {
        protected override void OnDoubleClick(System.EventArgs e)
        {
            OnClick(e);
        }
    }
}

我不知道这在Windows CE上是否可行。

如果您还想在表单设计器中隐藏DoubleClick事件,则可以将其添加到类中:

        [Browsable(false)]
        public new event EventHandler DoubleClick;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM