2010-05-26 6 views
1

조사 목적으로 일부 코드를 이동하면서 필자가 알지 못했던 .NET의 약간의 기능에 대해 살펴 보았습니다. 즉, 양식 클래스는 해당 양식 클래스의 첫 번째 클래스 여야합니다. 양식 디자이너가 일할 수 있도록 다음 작업을 수행하면 디자이너가 중지됩니다.양식의 코드 레이아웃 규칙

public class myClass 
{ 
} 

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

... 
} 

여전히 경고가 발생하여 컴파일되고 실행되지만 디자인은 적용되지 않습니다. 파일의 맨 아래로 myClass를 이동하면 제대로 작동합니다. 누구나 이것이 왜 그런지 알 수 있습니까?

또한 이것은 내가 알지 못하는 양식 내에 코드 레이아웃에 대한 규칙이 있음을 의미합니다. 그 중 누군가가 알고있는 어딘가의 목록이 있습니까? 아니면 단 하나만 찾았습니까?

+1

또한 디자이너 자동 생성 코드를 편집하지 않아야합니다. 깨지기 쉽다. 디자이너 및 문서 개요 창을 사용하여 컨트롤 생성 순서와 컨테이너 - 자식 관계를 다음과 같이 변경하십시오. 자식 컨트롤 생성 흐름을 변경하려고 시도한 후 MSVS 2008 디자이너가 미쳐서 제거되거나 코드 줄이 추가되는 경우가 있습니다. . –

답변

3

저는 이것이 .NET 1.1 디자이너의 유물이라고 생각합니다. 그 당시에는 부분적으로 키워드가 없었습니다. 디자이너는 편집 중이던 코드에서도 InitializeComponent() 메서드를 찾아야하는 부지런한 작업을했습니다. 컴파일러의 도움이 없습니다.

코드를 잘못 해석 할 위험이 있으므로 코드의 형식에 대한 기본 규칙이 있습니다. 파일의 첫 번째 클래스가되도록 폼 클래스를 요구하면 많은 의미가 있습니다. 그 규칙이 없을 경우, 불균형 중괄호와 같은 매우 기본적인 구문 오류가있는 클래스를 구문 분석 할 수 있어야합니다. 단순히 "폼을로드 할 수 없습니다"라고 선언하면 아무도 행복하지 않습니다.

부분 키워드를 사용할 수있게되면이 요구 사항을 해제 할 수 없으며 이전 버전에서 설계된 양식을 계속 지원해야합니다.

내가 아는 유일한 코드 레이아웃 규칙입니다. lots의 기타 사고가 발생할 수 있습니다. 수동으로 InitializeComponent()를 수정하면 항상 WSOD를 얻을 수 있습니다.

0

분명히 디자이너 일뿐입니다. 걱정할 필요가 없습니다.

이것은 C# 자체와는 아무런 관련이 없지만 Visual Studio 디자이너가 화면에서 양식을 찾아서 그릴 수 있습니다.