2013-04-29 2 views
1

여기에 lurker가 있지만 내 질문에는 시간이 필요합니다. http://pastebin.com/dQKnSSpY 내가이 GUI를 실행할 때 GUI가 상당히 지연되는 이유는 내 질문에 대한 이유입니다. DoubleBuffering, 컨트롤 추가 및 BindingSource 사용을위한 별도의 작업자를 포함한 여러 가지 작업을 이미 시도했습니다. 아직 도움이되지 않았습니다. 대개 내 C# 기술은 괜찮기 때문에 조금 바보 같아요. (윈도우 아주 새로운 형태의) 사전에GUI가 4 개의 텍스트 상자와 콤보 박스에서 상당히 반응하지 않습니다

감사

+0

코드가 자동 생성되었거나 처음부터이 코드가 전부입니까? –

+0

모든 것이 처음부터 있습니다. 당신이 상자를 더 잘 제어 할 수 있기 때문에 나는 더 좋아합니다. – JustAJ

+0

그게 전부입니다. 도움이 될만한 대답을했습니다. –

답변

1

당신의 문제는 페인트 이벤트 내에서 컨트롤을 생성한다는 사실에 있다고 생각합니다. Windows Forms에서 약간 녹슬지는 않지만 컨트롤을 다시 그려야 할 때 Paint 이벤트가 호출되고 이는 WM_PAINT 메시지가있는 OS에 의해 제어됩니다. 그리고 그것은 자주 일어날 수 있습니다. 어쩌면 Paint 이벤트가 아니라 Form 생성자에 컨트롤을 추가해야합니다.

+0

Forms에서 녹슬지 않아서 당신과 함께합니다. 그럼 페인트 메서드에 남겨 두어야 할 것은 this.Controls.Add() 또는 .. . – JustAJ

+0

나는 아무것도 말하지 않을 것이다. 심지어 그 이벤트에 가입하지 마라. 당신이 커스텀 페인팅 로직을 가지고 있다면, 페인트는 필요하다. 컨트롤을 추가하는 것은 페인트 로직이 아니며, WinForms가 그것을 페인트 할 것이다. 너는 멋진 화려한 타원형이나 서클 또는 그와 비슷한 것을 양식에 넣으십시오. – jure

+0

당신, 나의 친애하는 선생님, 맞습니다. 방금 생성자에서 메소드를 호출 할 때 GUI는 완벽하게 작동합니다. 대단히 감사합니다 – JustAJ

0

그것은 아주 간단한 변화 만이 도움이 될 수

http://pastebin.com/FnXJCAUE

나는 당신의 GUI 업데이트 밖으로 Screen.PrimaryScreen.WorkingArea 계산을했다 교체 GUI 클래스의 초기화시에 한 번만 계산되는 정수의 Integer를 가지는 이것은 각각의 GUI 그리기를 수행하는 계산 횟수를 줄이고 일반적으로 그리기 속도를 높이는 데 도움이됩니다. 예를 들어, 코드에서 즉시 느려지는 것을 보지 못했습니다.

+0

답장을 보내 주셔서 감사합니다.하지만 유감스럽게도 별다른 도움이되지 않습니다. (필자의 GUI에서 텍스트 상자에 숫자를 입력하면 내 노트북의 단일 프로세서 (현대)에서 느리게 진행됩니다. 약 80 %에서 실행됩니다. – JustAJ

+0

어떤 경우에는 @jure의 접근 방식을 볼 것입니다.이 양식 개체에 의해 이미 처리되어야하며 컨트롤을 initialise 폼에 추가해야하므로 페인트 이벤트를 제거했습니다. 이것이 작동하는지 모르겠지만 디버그하고 시도해보십시오. –

관련 문제