C# (初入江湖)-写个时间显示器(项目结构&基本控件&程序的发布与保存)
项目结构
WinForm项目结构
- 引用:包括所有的系统库文件的引用依赖
- App.config:当前项目的配置文件
- AssemblyInfo.cs: 包含程序版本、信息、版权的属性文件
- Resources.resx: 项目中的资源文件
- Form1.cs:窗体事件逻辑代码的实现,一般【需要我们手动书写】
- Form1.Designer.cs:窗体控件布局文件,一般【不需要我们修改】,只要通过设计界面代码就会自动生成
- 注意:
- Form1.cs和Form1.Designer.cs都定义了Form1类,该类使用了Partial关键词声明,其定义的类可以在多个地方被定义,最后编译的时候会被当作一个类来处理。因此两个文件各司其职,最后合并为一个类编译。
- 要手动实现自定义窗体,可以添加自己的类,然后继承Form类即可
- Program.cs:当前项目程序的主入口Main,启动项目,运行初始窗口
- 注意:
写个时间显示器
效果
程序分析
- 在页面添加一个 Button按钮,添加一个 TextBox文本框显示时间
- 给Button添加一个点击事件,点击后TextBox读取系统时间进行显示
- 给整个窗体添加一个背景图,美化下显示效果
双击 “显示当前时间”,修改源码,在自动生成的点击事件中添加以下逻辑
直接上代码
namespace demo_test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void showTime(object sender, EventArgs e)
{
// 获取当时系统时间并赋值给 textBox控件
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
this.textBox1.Text = time;
}
}
}
窗口事件
WinForm 自动添加事件处理
- 操作:在设计界面-控件属性-闪电符号(事件)-添加事件,就会在Form1.cs中自动生成该控件相应方法名称的事件触发函数
- MessageBox.Show():显示弹出消息提示框
WinForm布局
常见的WinForm 自动界面布局(设计界面拖拽布局)
- 操作:拖拽控件,放置在UI设计界面上布局
- 技巧:通过ctrl+多个控件选定,可以在上方工具栏进行细节的对齐微调,比如居中对齐、左对齐等
- 本质:每次拖拽添加一个布局控件,就会在窗口相应的Designer.cs设计布局代码文件中的InitializeComponent()方法中自动生成布局代码(比如Location、Size等),来实现布局。
WinForm布局属性
- Anchor:固定、锚定(无论窗口怎么变化,控件的相对位置都不变)
- 含义:固定控件与父窗口的【上下左右边距】不变,实现控件的锚定
- 左上角固定:选定 Top,Left(默认)
- 顶部固定,水平拉伸:选定 Top,Left,Right
- 居中固定:None(取消所有)
- 注意:Anchor效果的好坏取决于控件的初始位置,因为控件的初始位置决定了控件的边距!所以要让控件固定右上角,就要初始设计时就放在右上角!
- Dock:停靠属性,将控件停靠在父窗口的一侧或者中央
- Top:上,控件停靠在容器上侧,宽度填满容器,高度可以调节
- Bottom:下,控件停靠在容器下侧,宽度填满容器,高度可以调节
- Left:左,控件停靠在容器左侧,高度填满容器,宽度可以调节
- Right:右,控件停靠在容器右侧,高度填满容器,宽度可以调节
- Fill,中,控件填满容器中间剩余部分(所以说与控件添加顺序有关)
- None,无,不使用Dock属性
- *注意:
- 容器之间可以嵌套,使用布局属性(容器就是存放组件的,比如Panel)
- Dock属性与Anchor属性不能同时使用
- Dock属性不是固定边距了,就是相对位置填充
WinForm常用控件
- Button:按钮,按钮是一种非常常见的控件,任何需要在界面点击然后进行下一步操作的行为都可以使用按钮来完成
- 常用属性
- Enable:设置按钮是否可以点击
- Visable:设置按钮是否可以看见,常用于权限控制
- Name:设置按钮的名字
- Text:显示在按钮上的文字
- 常用事件
- Click:检测按钮点击事件,调用按钮点击后所需执行的方法
- 常用属性
- TextBox:输入文本框
- 常用属性有:Enable,Name,Text
- Multiline:将文本框变成文本域(文本域可回车多行输入)
- PasswordChar:在此属性中输入*字符就可变成密码框(文本框的密码框功能)
- 常用事件
- KeyPress按下按键(常用于输出完成点击回车,box.Text取输入值,事件e.keyChar取按下哪个键)
- 常用属性有:Enable,Name,Text
- CheckBox:可以进行勾选的选择框
- 常用属性:Enable,Visable,Name,Text
- AutoCheck:设置是否可以勾选和取消勾选
- Checked:设置是否已经勾选还是未勾选
- CheckState:勾选框的默认状态
- 常用事件
- CheckedChanged:监测Checked属性发生改变(勾选/取消勾选)
- 常用属性:Enable,Visable,Name,Text
- ListBox:列表框(展示数据、可单选/多选)
- 常用属性
- Name:控件名称
- Items:控件内所包含所有项的集合
- SelectionMode:控制在ListBox中进行选择时的行为方式,有四种类型
- None:无法进行选择
- One:一次只能选择一项
- MultiSimple:多选(在单击列表中的一项时,该项就会被选中,即使单击另一项,该项也仍保持选中状态,除非再次单击它)
- MultiExtended:多选 (它与MultiSimple不同,如果先单击一项,然后单击另一项,则只选中第二个单击的项)
- 常用事件
- 用代码在 item中添加内容项
- 用代码在 item中添加内容项
- 常用属性
- Label:标签
- 常用属性
- Text:设置标签显示的内容
- ForeColor:标签的颜色
- 常用属性
保存与发布
保存
- 程序文件.cs
- 工程文件.csproj
- 解决方案.sln
注:一个解决方案下可以有多个 项目工程, 一个项目工程下可以有多个 程序 文件
发布(怎么放到别人电脑上运行???)
非常简单!!!
直接将exe程序 复制 过去即可
具体步骤如下:
-
在解决方案上右键——》点击 在文件资源管理器中打开文件夹
-
进入bin——》debug 目录下,复制 exe 文件发送给别人就可以了
复制以上 exe文件即可!!!
注:如果运行的时候选的是relese运行,则进入 relase目录下复制exe文件
更多好看的内容和好玩的案例请关注我的WX GZH: 程序猿知秋