簡體   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