[英]Using a Picture Box as a button, how do I ignore/disable double-click events?
使用圖片框作為按鈕時遇到一些困難。 我想擁有自定義的按鈕圖形,而不是使用普通的Windows窗體的Button控件。
它工作得很好,除了快速按下單個按鈕時按鈕似乎滯后。 我希望每次單擊“圖片框”時都立即調用OnClick方法,但是它似乎正在注冊一個雙擊事件,即使我沒有使用該事件也是如此。
短版是我想要的:
我確實編寫了一個測試程序,該程序實際上表明正在發生的事情。 我編寫了一個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);
}
}
您為什么不創建自己的控件? 這樣,您無需執行任何操作即可獲得所需的行為。
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.