以往看見 InitializeComponent() 在 Form.cs 內而不是在 designer.cs 的 Code,都是些較早期的網路範例 Code,這次在公司內部發現 WinForm Project 發現,紀錄該情況
標準 Form
標準 Form 應該會附帶一個 designer.cs 檔案,建構子內會有 InitializeComponent(),是指向 designer.cs 檔案
designer.cs 檔案內會有 Form 控件相關設定值
namespace WindowsFormsApp1
{
partial class Form1
{
/// <summary>
/// 設計工具所需的變數。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
/// <param name="disposing">如果應該處置受控資源則為 true,否則為 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form 設計工具產生的程式碼
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改
/// 這個方法的內容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Text = "Form1";
}
#endregion
}
}
非標準的 Form如下圖,Form 內沒有 designer.cs 檔案,InitializeComponent() 則是都在 Form.cs 檔案內,說實話也不知道要如何稱呼該 Form
重現該 Form
反覆建立 Form 後發現,只要新增一個類別檔案,再去繼承 System.Windows.Forms.Form 後,等同於把 class 轉成 Form 後就會出現該情況,但該情況也可以正常運行,公司內的 Code 已經存在很久,還是 FormBase 設計,每個 Form 都要去繼承它,沒有因為該情況而產生異常過
不肯定是否還有其他方式也會發生,只試出該情況,VS 環境為 VS2022
沒有留言:
張貼留言