2010-08-06 55 views
2

我有一個應用程序在C#1.0中使用Visual Studio .NET啓動。作爲部分重寫/升級的一部分,我希望應用程序利用Windows Forms 2.0中的窗體自動縮放功能。這些功能依賴於設置AutoScaleDimensions屬性,該屬性應該由設計人員完成。我添加到項目中的新自定義窗體使用正確的設計器代碼進行設置,但是我所有的現有窗體和控件都不會自動生成此屬性,因此無法正確自動縮放。我相信這是因爲舊的表單是使用舊的VS2002項目格式創建的,其中所有設計器生成的代碼都被轉儲到用戶創建的代碼所在的文件中;現代的WinForms應用程序,當然,由VS分割成多個文件。將舊的VS 2002 Windows窗體項目轉換爲新版本

我的問題:是否有任何已知的方式將舊的Windows Forms項目「升級」爲現代Visual Studio格式? (項目文件已升級到VS2010格式,但表單本身仍然使用單文件格式。)我希望VS默認生成AutoScaleDimensions屬性,而不必手動初始化屬性。

+0

我不能給你一個確定的答案,但我的直覺是你運氣不好。在我所有的經驗中,VS的新版本將單個文件的表單定義像lepers一樣處理。 – 2010-08-06 19:35:54

回答

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,因爲每次修改表單都會重新生成InitializeComponent,但構造函數也可以。我希望避免必須手動完成每個表單的分配,但這不是世界末日。 – nealyoung 2010-08-06 21:55:59

0

你可以這樣做,但你必須手工進行:

  • 複製整個cs文件到了.Designer.cs
  • partial關鍵字添加到.designer一個
  • 在在.designer一個,去掉一切,除了Windows的設計器生成的代碼
  • 不要在的.cs相反(刪除Windows設計器生成的代碼)
  • 添加了.Designer.cs到項目

相當簡單,但非常勞動密集,可以做幾種以上的形式。

相關問題