简介:微软官方文档---Windows 窗体是一个可创建适用于 Windows 的丰富桌面客户端应用的 UI 框架。 Windows 窗体开发平台支持广泛的应用开发功能,包括控件、图形、数据绑定和用户输入。 Windows 窗体采用 Visual Studio 中的拖放式可视化设计器,可轻松创建 Windows 窗体应用。
一、事件处理
注意与细节:
1.事件处理回调是定义在Form1.cs中
2.可使用MessageBox.Show()弹出一个消息框
3.CW仅调试状态下可看见输出
4.手工事件处理 System.Evenhandler (在Form1.cs中手动添加事件处理)
5.双击或者目标事件下选中回车,将在Form1.Designer.cs中自动生成
二、控件布局
控件的布局:当窗口中有多个控件时,如何决定每个控件的位置和大小。
布局方式:
可视化布局:在设计器里拖放操作
手工布局:用代码计算设置并设置每个控件的位置
使用布局器:用布局器自动布局
注意与细节:
1.TextBox:AutoSize = false
否则会自动计算所需大小(区分Size和ClientSize)
2.窗口的自适应:当窗口大小变化是,会调用OnLayout()方法
3.Anchor :锚定,将控件固定于某个位置
i)拉伸:Anchor =Top|Right|Bottom|Left
ii) 居中:Anchor = None
4.Dock: 停靠,将控件停靠在一侧或中央
三、布局器
布局器LayoutEngine:负责子控件的布局(默认一个Form或Panel自带布局器)
FlowLayoutPanel - 流式布局:
子控件依次排列,一行排满后换行继续排。
TableLayoutPanel - 表格布局:
以表格形式布局。
注意与细节:
1.布局的嵌套:Panel本身也是控件,也有Anchor/Dock属性
2.表格布局,可增减删除列,设置列的宽度:
绝对值:(固定大小)
百分比:(占据剩余空间的百分比)
自动大小:(根据所需的空间自动分配)
四、常用控件
1.文本框相关属性
行为:Multiline:单行模式/多行模式
Password Char:‘*’密码输入格式(但仍可使用MessageBox.Show()展示出来)
ReadOnly:只读模式
2.复选框CheckBox
相关属性:
(外观)Text:文本显示
(外观)checked:是/否
相关事件:
(操作)Click:点击动作(用户手动点击)
(杂项)CheckedChanged:选中状态发生变化(状态值发生变化,既可以是用户,也可以是程序代码改变)
3.下拉列表ComboBox
i)添加数据项-直接在设计器里编译 属性|数据|Item
ii)构造方法中手动添加 comboBox1.Items.Add("red");
4.列表框ListBox
可展示插入的项于用户,并提供单选多选操作
属性:(行为)SelectionMode:单选/多选
事件:(行为)SelectionIndexChanged
5.图片
Image:抽象类,图像的统称
Bitmap:具体类,位图
6.图片框
PictureBox 图片框控件:用于显示一个图片
设置缩放模式:picbox.SizeMode =PictureBoxSizeMode.Zoom;
显示图片:picbox.Image = img;
加载图片:picbox.Load("绝对地址")
7.资源文件Properties/Resources.resx
双击Resources.resx,打开资源编译器,添加资源,选择,修改资源名(方便调用),使用资源
五、复合、自定义控件
复合控件:将标准控件组合起来
class YourControl:UserControl{}
扩展控件:继承于标准控件
class YourControl:Button{}
自定义控件:完全地自定义一个控件
class YourControl:Control{}
注意与细节:
1.自定义属性
属性的重写如:
public override string Text
{}
2.自定义事件
//添加自定义事件
public event EventHandler SearchEvent;
//自定义事件绑定点击事件
private void btn_Click(object sender,EventArgs e)
{
searchEvent?.invoke(this,e);
}
重新生成解决方案(shift + ctrl + B),刷新Form1.cs,便可见自定义事件
3.添加属性
如:Test,Font,BackColor
六、对话框
系统自带对话框
OpenFileDialog
SaveFileDialog
FolderBrowserDialog
ColorDialog
FontDialog
七、栏
菜单栏MeauStrip:支持可视化编辑
工具栏ToolStrip
右键菜单ContextMenuStrip 在设计器里直接可视化编辑即可
给ListBox添加鼠标事件MouseUp
void listBox1_MouseClick(sender e)
弹出上下文菜单
contextMeauStrip1.Show(listBox1,e.Location);
八、列表控件
Detail:详细模式
List:列表模式
Large Icon:大图标模式
SmallIcon:小图标模式
图标设置
listView1.laregeImageList//用于大图标模式
listView1.SmallImgleList//用于其他显示模式
item = new ListViewItem(label,imageIndex)//添加项所使用的图片索引
//显示优化,批量数据添加时避免界面频繁刷新
listView1.BeginUpdate();
//。。。修改显示数据代码省略
listView!.EndUpdate();
九、其他类二次开发
来自邵发的文档摘录
2.编辑标签
设置LabelEdit为true,允许编辑(也可使用ListViewItem.BeginEdit())
3.编辑验证
4表格控件DataGridView,对多行多列数据展示
心得体会:
winform基于C#语言的编写,让作者有一种VB的熟悉感,可视化布局人机交互体验更加,在自定义菜单栏等使用过程又和C++MFC布局有些相似,整体学习下来通俗易懂,可快速上手。其中的自定义控件也十分有趣,像封装了一个图形化的函数,再去调用更加多元化。为C#+AE的二次开发奠定了一点基础
感谢大家的批评指正!!
感谢大家的批评指正!!
感谢大家的批评指正!!