目录
一、winForm窗体应用介绍
1.1工具箱的介绍
1.2控件的应用
1.3属性窗口的内容
1.4布局的重要性
1、布局的方式(方案一:Panel+Dock)
2、TableLayoutPanel(表格用得最多)
3、FlowLayoutPanel
4、跨行跨列:让控件占多个格子
1.5常用控件的应用
1、TextBox(接受用户输入)
2、RadioButton (单选按钮):
3、CheckBox (复选框):
4、ComboBox (下拉框):
1.6DataGridView的应用
一、winForm窗体应用介绍
1.1工具箱的介绍
工具箱包含窗体应用的所有控件,控件是窗体应用的基础;
打开工具箱的方式:
菜单:视图(V) → 工具箱(X)
快捷键:Ctrl+Alt+X
Button | 按钮,点击触发 Click 事件 |
|---|---|
Label | 显示文字,用户不能改 |
TextBox | 让用户输入文字 |
CheckBox | 多选,可勾选多项 |
RadioButton | 单选,一组里只能选一个 |
1.2控件的应用
1、控件的使用流程:
(1)从工具箱把控件拖到窗体上;位置先随意,后面用布局排。
(2)属性窗口把 Name 改成有意义的名字:btnLogin、txtUser。(方便后续代码的编写)
(3)Text 文字、Size 尺寸、Enabled 可用、Dock/Anchor 摆放。
(4)双击控件自动生成 Click 处理函数,在代码里写逻辑。
1.3属性窗口的内容
打开方式:右键窗体点击属性
属性窗口包含:属性、事件、属性名、属性值
属性的作用范围:从整窗到单个控件,再到控件之间的关系包含(窗体属性、控件属性、布局属性)
Name | 代码里引用控件的名字 | btnLogin、txtUser |
|---|---|---|
Text | 控件上显示的文字 | 登录 |
Size | 宽 × 高(像素) | 100,100 |
Font | 字体、字号 | 宋体, 9pt |
BackColor / ForeColor | 背景色 / 前景色 | White / ControlText |
Dock | 停靠到容器某一边 | Top / Fill |
1.4布局的重要性
一个单元格只能放一个控件;要在同一格里放多个,就先在格里放容器,再把控件放进容器。
布局=把窗体切成若干区域,区域里还能再布局(嵌套)
开发顺序:① 先布局 ② 再往格子里放控件
思路:先行后列,或先列后行
1、布局的方式(方案一:Panel+Dock)
通过拖拽Panel到窗体,调整Panel属性的Dock值,实现布局
优点:直接操作且直观
缺点:布局简单、限制了布局的多样性和个性化操作
注意事项:同一容器里多个控件,Dock 要设成不同值;Dock = Fill 的控件必须最后添加、最后设置,否则它先占满、别的控件被挤没。
2、TableLayoutPanel(表格用得最多)
通过使用TableLayoutPanel设置初始表格布局实现布局
优点:网格化、快捷操作、美观整洁
3、FlowLayoutPanel
通过使用TableLayoutPanel设置初始布局,TableLayoutPanel是自带控件按方向依次排列,排满自动换行;
优点:适合工具条、按钮组、标签列表这种“一串控件”;
缺点:不适合需要严格对齐的表单
4、跨行跨列:让控件占多个格子
跨行跨列可以提升布局的美观性,以及个性化的操作
通过调整rowSpan=n,跨n行;调整ColumnSpan = n,跨 n 列;
1.5常用控件的应用
1、TextBox(接受用户输入)
Multiline:是否多行 (true多行,false单行)。
PasswordChar:密码掩码字符(如输入*变成密码框)。
AcceptsReturn:是否接受回车键换行(多行时建议设为true)。
ReadOnly:是否只读(true无法修改文本)。
2、RadioButton (单选按钮):
Checked:表示当前是否被选中。
分组核心规则:同一个容器(如 Panel、GroupBox)内的单选按钮互斥。要实现多组单选,必须用不同的容器把按钮隔开。
3、CheckBox (复选框):
支持多选,属性与单选按钮类似。
4、ComboBox (下拉框):
Items:设置下拉选项的集合(编辑器中每行写一个选项)。获取选中项:SelectedItem(获取对象) 或SelectedIndex(获取索引,-1表示未选中)。
1.6DataGridView的应用
DataGridView可以手动添加列名、类型、页眉文本;可以通过手动添加row实现数据的绑定,但是实际操作中需要连接数据库,代码添加更便捷;
dgvStudents.Rows.Add(1001,"张三",18,new DateTime(1990,12,11));private List<Student> students = new List<Student>(); private List<Student> allStudents = new List<Student>() { new Student(1001,"张三",21,new DateTime(2005,09,21)), new Student(1002,"李四",22,new DateTime(2004,08,11)), };