2013-11-27 20 views
-2

我開發了繼承按鈕控件的自定義控件,實際上我是創建按鈕與一個圖片框和按鈕上的標籤(圖片框和標籤是子控件)。我創建了相同的方法和有線子控件來表現爲點擊父(Button),它的工作原理,但它的速度慢,無論我做什麼(嘗試使用InvokeOnClick,me.performclick,Me.OnClick(New EventArgs()),都嘗試過所有事件的方法),但點擊標籤或圖片框是慢的,我需要它是快速的,因爲直接點擊按鈕原因在我的應用程序是非常重要的,能夠點擊按鈕兩秒,例如,如果你點擊在標籤或picturebox兩次在第二它只會發射一次而不是2. 我一直在想的是使標籤和picturebox對事件隱形是否有可能或任何其他想法?緩慢標籤和picturebox事件發射是按鈕的孩子

感謝轉發

+2

**非常難以分辨,看不到一個字節的代碼,但是圖片來源真的很大嗎?如果您在點擊事件中發生了很多事情(例如呈現大圖像),則需要一些時間。 – Plutonix

+0

我的聲望是8,無法發佈圖片來描述,沒有關於大圖片或其他任何事情,只是點擊事件,我希望能夠直接點擊按鈕。我對3個事件使用相同的方法,label.click,picturebox.click和button.click,按鈕點擊完美,但標籤和picbox事件在第二次點擊時很慢,並且反應不快。 – user2877885

+1

不能告訴你什麼都看不到事件**代碼**(不是圖片) - 這是所有導致問題的代碼。編輯你的帖子顯示一些代碼,如果你需要幫助 - 不要格式代碼 – Plutonix

回答

0

您正在與ControlStyles.StandardDoubleClick戰鬥。其中,用於PictureBox和Label控件,但將關閉爲

因此,當您快速點擊圖片框或標籤時,他們將生成DoubleClick事件而不是Click事件。由於您可能沒有爲該事件編寫處理程序,因此您會將其解釋爲「緩慢」。訂閱該事件並調用Me.OnClick是一種解決方法。

只是不這樣做。 PictureBox和Label是點擊式方便控制,但它們非常浪費。在按鈕的OnPaint()方法覆蓋中只需要兩行代碼即可獲得完全相同的結果,減去開銷和事件問題。使用e.Graphics.DrawImage()繪製pb的圖像和TextRenderer.DrawText()來繪製標籤的文本。

+0

感謝百萬,更乾淨,更簡單。 – user2877885