2014-10-31 55 views
1

我正在VS2013的c#遊戲策劃者中製作一個變體。我遇到的問題是我製作了4個小面板,人們可以點擊它們來設置他們的代碼。當他們點擊面板時,會啓動一個改變面板背景顏色的事件。我的問題是,如果我點擊面板,顏色變化太慢。當您嘗試快速滾動顏色時,這通常很明顯。在切換之後切換到下一個需要很長的時間。我已經嘗試過評論我在事件上做的每一點代碼,除了顏色改變之外,但它並沒有幫助所以我不相信代碼花費太長時間才能運行。任何人都有這方面的經驗?c#面板改變的背景顏色很慢(或者事件很慢)

編輯: 使用標準的形式是在Visual Studio 2013 這裏有一些你要求的代碼......這不是太大,雖然

private void InputCode1Clicked(object sender, EventArgs e) 
    { 
     code1++; 
     if (code1 > 5) 
     { 
      code1 = 0; 
     } 
     this._input1.BackColor = ENUMS.GetColor((ENUMS.color)code1); 
     _controller.InputCodeClicked(sender, e, 1); 
    } 

記住,即使是這樣的:

private void InputCode1Clicked(object sender, EventArgs e) 
    { 
     this._input1.BackColor = ENUMS.GetColor((ENUMS.color)code1); 
    } 

它仍然運行緩慢......

+0

沒有看到您的代碼,就如何提高性能提出建議很難。 – sous2817 2014-10-31 14:07:43

+0

有些代碼會很聰明地添加在這裏,所以有人可以看到並給你優化的想法。 – Wolf5 2014-10-31 14:08:30

+0

你在使用哪個UI框架? WPF? Silverlight的? Windows運行時?的WinForms?問題代碼是什麼樣的?考慮使用按鈕而不是顯式的點擊處理,這樣你就可以自動進行鍵盤處理 – 2014-10-31 14:11:57

回答

1

定了!使用mouseDown事件而不是鼠標點擊/點擊事件解決了我的問題...

+0

我懷疑一個事件會比另一個事件慢。該代碼一旦被觸發,仍然排隊等待UI線程。我相信你引用的速度慢是因爲點擊事件只會在你釋放按鈕後觸發,而MouseDown會在你按下按鈕時立即觸發。但最好的學習方法是經常首先失敗:) – Wolf5 2014-11-03 09:01:17

0

MouseDown有幫助,因爲您可能在每次第二次獲得雙擊時,而不是點擊時,快速點擊。雙擊不會影響MouseDown。