2014-10-31 5 views
1

C#에서 VS2013의 게임 마스터에 변형을 적용하고 있습니다. 내가 가진 문제는 사람들이 코드를 설정하기 위해 클릭 할 수있는 4 개의 작은 패널을 만들었다는 것입니다. 사용자가 패널을 클릭하면 패널의 배경색을 변경하는 이벤트가 시작됩니다. 내 문제는 패널을 클릭하면 색상 변경이 너무 느립니다. 이것은 색을 빠르게 스크롤하려고 할 때 주로 두드러집니다. 그것은 단지 전환 후 다음 하나로 전환하기 전에 좋은 반 초가 걸립니다. 색상 변경을 제외하고 이벤트에서 코드의 모든 비트를 주석 처리하려고했지만 도움이되지 않습니다. 따라서 코드를 실행하는 데 너무 오랜 시간이 걸린다는 것을 믿지 않습니다. 누구도이 경험이 있습니까?C# 패널 변경 중 배경색이 느림 (또는 이벤트가 느림)

편집 : 비주얼 스튜디오 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

+0

누군가가 당신에게 최적화 아이디어를보고 제공 할 수 있도록 일부 코드는 여기에 추가하는 것이 현명합니다. – Wolf5

+0

어떤 UI 프레임 워크를 사용하고 있습니까? WPF? 실버 라이트? Windows 런타임? WinForms? 문제 코드는 어떤 모양입니까? 키보드 처리를 자동으로 수행 할 수 있도록 명시 적 클릭 처리 대신 버튼 사용을 고려하십시오. –

답변

1

IT를 고정! mouseclicked/clicked 이벤트 대신 mouseDown 이벤트를 사용하여 내 문제를 해결했습니다 ...

+0

한 이벤트가 다른 것보다 느릴 것으로 의심됩니다. 이 코드는 해고되는 즉시 UI 스레드에 대기합니다. 버튼을 눌렀을 때 MouseDown이 즉시 실행되는 동안 Clicked 이벤트는 버튼을 놓은 후에 만 ​​발동하기 때문에 참조하는 속도가 느린 것으로 생각됩니다. 하지만 배우는 가장 좋은 방법은 종종 먼저 실패하는 것입니다 :) – Wolf5

0

MouseDown은 클릭 할 때마다 두 번 클릭 할 가능성이 높기 때문에 도움이됩니다. MouseDown은 두 번 클릭하면 영향을받지 않습니다.