跳转至

项目结构与部分类#

来源D:\study\C#1\WinForm\stu0804\01stu0804\练习stu0810\手动添加控件


1. 项目文件结构#

WinForm 项目/
├── Program.cs              # 程序入口
├── Form1.cs                # 窗体逻辑代码(手动编写)
├── Form1.Designer.cs       # 设计器自动生成的代码(控件、事件绑定)
├── Form1.resx              # 窗体资源文件(图标、图片等)
├── App.config              # 应用配置文件
└── Properties/
    ├── AssemblyInfo.cs     # 程序集信息
    ├── Resources.resx      # 资源文件(图片、字符串等)
    └── Settings.settings   # 应用设置

💡 分工:逻辑代码写在 Form1.cs,界面布局代码由设计器自动生成在 Form1.Designer.cs,一般不需要手动修改。

2. 部分类(partial class)#

同一个类可以拆分成多个文件定义,用 partial 关键字标记:

// FrmMain.cs — 手动编写的部分
public partial class FrmMain : Form
{
    public FrmMain()
    {
        InitializeComponent();  // 在 Designer.cs 中定义
        SetTitleCenter();        // 自定义逻辑
    }
}

// FrmMain.Designer.cs — 设计器自动生成的部分
partial class FrmMain
{
    private void InitializeComponent()
    {
        // 控件初始化代码(不要手动修改)
        this.btn1 = new System.Windows.Forms.Button();
        this.comboBox1 = new System.Windows.Forms.ComboBox();
        // ...
    }
    private Button btn1;
    private ComboBox comboBox1;
}

💡 规则Designer.cs 由 Visual Studio 设计器自动管理,逻辑代码都写在 .cs 文件里。所有文件中的 partial 声明会编译成同一个类。

3. Program 入口#

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();                 // 启用视觉样式
    Application.SetCompatibleTextRenderingDefault(false); // 禁用兼容模式
    Application.Run(new FrmMain());                  // 运行主窗体(阻塞式)
}

💡 关键Application.Run() 是阻塞的,它会一直运行直到主窗体关闭。如果需要先显示登录窗口再显示主窗口,需要使用 Show() + Hide() 配合(见多窗体笔记)。

4. 常见问题#

4.1 为什么修改控件属性不生效?#

  • 控件必须在 InitializeComponent() 之后才能操作,构造函数里注意顺序。
  • 手动创建的控件必须 this.Controls.Add(control) 添加到窗体(或容器)才会显示。

4.2 命名空间与类#

namespace 项目名
{
    public partial class Form1 : Form
    {
        // 所有窗体类都要继承 System.Windows.Forms.Form
    }
}
  • 窗体类必须继承 Form
  • 类名 = 文件名(便于管理)
  • 项目里可以放多个窗体类(多窗体项目见 05-多窗体与数据传递

相关笔记#