2010-08-06 3 views
2

Visual Studio .NET을 사용하여 C# 1.0에서 시작된 응용 프로그램이 있습니다. 부분 다시 쓰기/업그레이드의 일부로 Windows Forms 2.0의 자동 크기 조정 기능을 활용하는 응용 프로그램을 원합니다. 이러한 기능은 디자이너가 수행해야하는 AutoScaleDimensions 속성 설정에 의존합니다. 프로젝트에 추가하는 새로운 사용자 지정 양식은 올바른 디자이너 코드로 설정되지만 기존의 모든 양식과 컨트롤은이 속성을 자동으로 생성하지 않으므로 올바르게 자동 크기 조정되지 않습니다. 전 디자이너가 생성 한 코드가 사용자 생성 코드와 동일한 파일에 덤프되는 구형 VS2002 프로젝트 형식으로 이전 형식이 만들어 졌기 때문에 이것이라고 생각합니다. 최신 WinForms 응용 프로그램은 물론 VS로 여러 파일로 분할됩니다.이전 VS 2002 Windows Forms 프로젝트를 최신 버전으로 변환

내 질문 : 이전 버전의 Windows Forms 프로젝트를 최신 Visual Studio 형식으로 "업그레이드"하는 방법이 있습니까? (프로젝트 파일은 VS2010 형식으로 업그레이드되었지만 양식 자체는 여전히 모노 파일 형식을 사용합니다.) VS에서 기본적으로 AutoScaleDimensions 속성을 생성하고 속성을 직접 초기화하지 않아도됩니다.

+0

나는 당신에게 결정적인 대답을 줄 수는 없지만 나의 직감은 운이 없다는 것입니다. 내 경험에 비추어 볼 때 VS의 새 버전은 나 환자와 같은 단일 파일 양식 정의를 처리합니다. –

답변

1

양식 클래스를 부분 클래스로 변환하는 데 도움을 얻을 수 없습니다. 실제로 어떤 필요성도 없습니다. 디자이너는 여전히 이전 스타일을 지원합니다. 양식 레이아웃을 편집해도 속성 할당이 자동으로 삽입되지 않으면 ClientSize 할당 바로 전에이를 직접 붙여 넣으십시오. 샘플 프로젝트에서 먼저 사용해보고, 폼에 단추를 놓고 Designer.cs 파일 내용을 살펴보십시오. 그것은 유사 에게서는 :

 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(...) 
     // etc.. 

당신은 당신의 폼의 코드에서이 붙여 넣기하여 컴퓨터를 재부팅 할 필요없이 양식이 제대로 확장 있는지 확인하기 위해 그것을 밖으로 시도 할 수 있습니다 : 레이아웃 속성 땜질

protected override void OnLoad(EventArgs e) { 
     this.Font = new Font(this.Font.FontFamily, 125f/96 * this.Font.SizeInPoints); 
     base.OnLoad(e); 
    } 

수도 보기 좋게 만들어야합니다.

+0

오른쪽. 당신이 제안한 것처럼 InitializeComponent를 수정할 수는 없지만, 각 폼 수정으로 다시 생성되지만 생성자도 작동합니다. 저는 각 양식에 수동으로 과제를 수행하는 것을 피하기를 희망했지만 세계의 종말은 아닙니다. – nealyoung

0

이 작업을 수행 할 수 있지만 수동으로 할 필요가 :

  • 가 .designer에 부분 키워드를 추가 .designer.cs하는

    • 복사합니다 전체 .cs 파일을 하나
    • 에서 .designer 하나는 .cs에 반대
    • 이 프로젝트에 .designer.cs 추가 (코드 생성 된 윈도우 디자이너를 제거)을 수행 코드
    • 생성 된 윈도우 디자이너를 제외한 모든 제거

    몇 가지 형태 이상으로는 상당히 간단하지만 매우 노동 집약적입니다.

  • 관련 문제