项目结构与部分类#
来源:
D:\study\C#1\WinForm\stu0804\01、stu0804\练习、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 命名空间与类#
- 窗体类必须继承
Form - 类名 = 文件名(便于管理)
- 项目里可以放多个窗体类(多窗体项目见
05-多窗体与数据传递)
相关笔记#
- WinForms 学习笔记总览 — 总览与目录
- 事件的基本使用 — 事件机制