2014-02-17 6 views
1

winforms 응용 프로그램을 작성할 때 Implementation.cs 파일을 각 양식에 작성하는 경향이 있습니다. 부분 클래스는 복수 양식을 사용합니다.

내가 partial class Form1로 시작 Form1.Implementation.cs라는 새로운 파일을 만들 것, 내가 Form1.cs를을 말해봐.

Form1.cs를은 다른 모든 Form1.Implementation.cs로 이동, 모든 이벤트 콜백 메소드를 (디자이너가 무슨 짓을했는지)가 포함되어 있습니다. 더 읽기 쉬운 코드를 작성하는 데 도움이됩니다.


은 내가 그냥이 Form1.designer.cs입니다처럼 "서브"로 Form1.Implementation.cs를 원했다, 그래서 나는 .csproj 파일을 편집했다.

<Compile Include="Form1.Implementation.cs"> 
    <DependentUpon>Form1.cs</DependentUpon> 
</Compile> 

는 다시로드 한 후, 그러나, 비주얼 스튜디오는 자동으로 바로 DependentUpon 요소 후 <SubType>Form</SubType>을 추가합니다. Doubleclicking Form1.Implementation.cs에는 코드가 표시되지 않지만 다른 초기 빈 양식이있는 디자이너가 표시됩니다.

처럼 "클래스 Form1에, ISA 양식이다 (?) 여러 형태."입니다

나는 클래스 Form1에adding DesignerCategory attribute을했지만, 그것은뿐만 아니라 Form1.cs를에 영향을줍니다.

음, 'Shift-F7'또는 'Ctrl-Shift-0'을 누르는 것은 큰 문제가 아닙니다. 나는

  1. 그것이 비주얼 스튜디오의 결함은 ... 궁금
  2. 보조 (?) 형태가 정말 어떻게 든 존재
  3. 이 언젠가는
내 윈폼 프로젝트를 날려 버릴거야
+1

코드에 대한보다 "구조화 된"접근 방법을 찾아야합니다. 아마도 MVP가 적합 할 것입니다. 귀하의 양식이 단순히 바보 뷰가되고 실제 코드가 발표자 내부에있는 경우입니다. –

+1

속성은 'Form1' _type_에 대한 것이지 _source 파일 중 하나에 대한 것이 아닙니다. 실제로 부분 클래스는 코드에만 존재하며 컴파일하는 동안 병합됩니다. –

답변

2

시도한 것을 성취하는 유일한 방법은 이미 알고있는 <DependentUpon>을 추가하는 것입니다. 이제 Visual Studio는 Form에서 파생 된 모든 클래스에 대해 <SubType>Form</SubType>을 자동으로 추가합니다. Form1.cs에는 아마도 public partial class Form1 : Form이라는 줄이 포함되어 있으므로이 위치에서 SubType이 제공됩니다.

다른 파일 - Form1.designer.cs입니다Form1.Implementation.cspartial class Form1를 포함 할 수 있지만, 여러 파일 부분 클래스 정의 효과적으로 여전히 하나의 클래스 정의하기 때문에, 비주얼 스튜디오는 여전히 상속을 감지 Form. 나는 당신이 이미 그것을 알고 있을지도 모른다고 믿는다, 다만 경우에있어서 here's the MSDN article about the partial keyword.이 시나리오에서 Form의 인스턴스가 여러 개 있다는 것에 대해 걱정하지 마십시오. 이것은 여전히 ​​하나의 클래스라는 것을 기억하십시오 - Form1, 얼마나 많은 파일을 배포했는지에 관한 정보가 없습니다. Form을 상속 결국

, 클래스를 포함하는 모든 코드 파일 (심지어 부분!) (또는 UserControl)가 자동으로 디자이너에서 열립니다. 이것은 의도적으로 설계된 동작입니다.

여기 해결책은 간단합니다. Form을 기반으로하지 않는 별도의 클래스를 정의하는 코드 파일을 만들거나 솔루션 탐색기에서 해당 파일의 코드를 보려면 F7 키를 사용하는 것이 좋을지도 모릅니다. 그 코드 파일이 <DependentUpon>이라면 상관 없습니다. Form 또는 UserControl의 상속 만 중요합니다.

가장 좋은 방법은하지만, 내 의견으로는, 당신에게 비주얼 무엇 Studio를주고있다을 고수하는 것입니다 :

  • 디자이너가 생성 한 코드 (Form1.designer.cs입니다
  • 귀하의 코드에 남아 당신이, 구현)에 넣어 것은 Form1.cs를간다 (대신
,745) 디자이너로가는 그 코드를 볼 F7을 명중

이것은 우리 팀이 몇 년 동안 고수해 왔던 접근법입니다. 디자이너 코드와 손으로 코딩 한 작업을 구분하는 기본적인 방법을 제공합니다. 코드를 더 잘 구분하려면 의견에 Simon Whitehead의 제안처럼 MVP와 같은 디자인 패턴을 사용하십시오.