2009-10-30 2 views
3

나는 정확하게 질문을 구사하는 방법을 생각할 수 없다. 그러나 희망을 갖고 나의 의미는 분명 할 것이다. Control.SuspendLayout 및 Control.ResumeLayout은 카운트를 유지합니까?Control.SuspendLayout 및 Control.ResumeLayout은 카운트를 유지합니까?

다시 말해서 SuspendLayout을 두 번 호출하고 ResumeLayout을 한 번 호출하면 레이아웃이 여전히 일시 중지됩니까?

답변

7

이와 같은 질문에 얽매여있는 이유는 거의 없습니다. 소스 코드는 "Reference Source"라는 제목으로 제공됩니다. 그것을 얻는 가장 좋은 방법은 .NET Mass Downloader입니다. 모든 .NET 어셈블리에 소스 코드가 게시 된 것은 아니며 백업은 유서 깊은 Reflector입니다.

어쨋든는 소스 코드는 다음과 거의 같습니다

private byte layoutSuspendCount; 

public void SuspendLayout() { 
    layoutSuspendCount++; 
    if (layoutSuspendCount == 1) OnLayoutSuspended(); 
} 

public void ResumeLayout() { 
    ResumeLayout(true); 
} 

public void ResumeLayout(bool performLayout) { 
    if (layoutSuspendCount > 0) { 
    if (layoutSuspendCount == 1) OnLayoutResuming(performLayout); 
    layoutSuspendCount--; 
    if (layoutSuspendCount == 0 && performLayout) { 
     PerformLayout(); 
    } 
    } 
} 

internal void PerformLayout(LayoutEventArgs args) { 
    if (layoutSuspendCount > 0) { 
    //... 
    return; 
    } 
    //etc... 
} 

그래서 귀하의 질문에 대한 대답은 : 네.

-3

SuspendLayout을 두 번 호출하고 ResumeLayout을 한 번 호출하면 레이아웃이 여전히 일시 중지됩니까?

번호 레이아웃이 재개됩니다.

관련 문제