【C#】 WinForm窗体应用程序学习笔记 (一)
WinForm窗体应用程序学习笔记(一)由于控制台应用程序的运行结果都是通过控制台输出的,不能提供良好的用户体验,为此,C#提供了WinForm窗体应用程序。WinForm具有一系列丰富的控件,用于创建基于Windows的应用程序。每一个控件模型都相当于一个类,通过继承和扩展这些控件类来使Windows界面变的更加好看、更加具有交互性。友情链接:WinForm窗体应用程序学习笔记(一)...
WinForm窗体应用程序学习笔记(一)
由于控制台应用程序的运行结果都是通过控制台输出的,不能提供良好的用户体验,为此,C#提供了WinForm窗体应用程序。WinForm具有一系列丰富的控件,用于创建基于Windows的应用程序。每一个控件模型都相当于一个类,通过继承和扩展这些控件类来使Windows界面变的更加好看、更加具有交互性。
友情链接:
WinForm项目的文件结构
我们首先打开VS新建项目,创建Windows桌面窗体应用程序:
修改完程序名称点击右下角确定即创建了一个WinForm程序,然后我们看VS界面最右边的“解决方案资源管理器”,这里面显示了WinForm的文件结构:
从上图中可以看到WinForm项目的文件包括五个部分:
- Properties : 设置项目属性
- 引用 :设置对其他项目命名空间的引用
- App.config :设置数据库的配置信息
- Form1.cs :设置窗体界面以及编写逻辑代码
- Program.cs :设置项目运行时的主窗体
深入了解Form1.cs和Program.cs两个文件的作用
1)Form1.cs 由Form1.cs[设计]界面与Form1.cs逻辑代码两部分构成
a . Form1.cs[设计]界面:
以上gif图演示了 设计界面 的使用方法,即用户可以通过拖动工具箱中的控件对窗体界面进行设计。
b . Form1.cs逻辑代码:
逻辑代码部分为了与用户之间做交互。
c . Form1.Designer.cs文件:
用于在窗体类中自动生成控件的初始化代码,例如我们刚刚将Button按钮拖拽到From1.cs窗体上,在这个文件中会自动生成一段代码。如下图所示:
d . Form1.resx文件:
用于资源导入,通过该文件导入资源,无需引用外部文件。
2)Program.cs文件
是WinForm程序的主入口,如下图所示:
控件的常用属性和事件
在C#中,所有的控件都直接或间接继承自Control类,Control类中提供了许多属性,这些属性都是控件的共同特征,具体如下表所示:
属性 | 说明 |
---|---|
Name | 指示代码中用来标识该对象的名称 |
Text | 与控件关联的文本 |
Visible | 确定该控件是可见的还是隐藏的 |
BackColor | 该控件的背景颜色 |
Cursor | 指针移过该控件时显示的光标 |
Dock | 定义要绑定到容器的控件边框 |
Enable | 指示是否启用该控件 |
Font | 用于显示控件中文本的字体 |
ForeColor | 此控件的前景色,用于显示文本 |
Size | 控件的大小 |
Tag | 与对象关联的用户定义数据 |
TextAlign | 将在控件上显示的文本的对齐方式 |
在Control类中,除了定义属性,还定义事件。根据用户的操作引发相应的事件,开发人员可以根据不同的事件来编写具体的处理方法。具体如下表所示:
事件 | 说明 |
---|---|
Load | 窗体加载时被触发 |
Click | 单击控件时发生 |
MouseEnter | 在鼠标进入控件的可见部分时发生 |
MouseLeave | 在鼠标离开控件可见部分时发生 |
BackColorChanged | 在控件的BackColor属性值更改时引发的事件 |
FontChanged | 在控件的Font属性值更改时引发的事件 |
创建第一个WinForm应用程序!
成品效果:
创建项目过程上文中有写,这里不再贴出……
所以直接从“向窗体中添加控件”开始,在工具箱里面找到“Label”文本标签与Button按钮,拖入Form1.cs[设计]页面。如下图所示:
然后点击F4调开属性,设置Label的属性,将其Name属性改为“IbInfo”,Text属性设置为“如果你点到我,游戏就结束了”,如下图所示:属性在右下角!
同样的,将Button按钮的Name属性设置为“btnMe”,Text属性设置为“你点得到我?”,如下图所示:
这些属性设置完成之后,接着来实现一下控件事件的响应方法,点击【属性】窗口的“类似闪电”图标的按钮,默认情况下,Button按钮的“Click”事件会被选中。我们希望当鼠标移动至按钮上时,按钮立即变换自己的位置,所以在这里我们选中MouseEnter,双击一下啊;然后我们希望点到按钮之后,立即退出程序,所以我们选中MouseClick,双击一下。之后我们会发现Form1.cs文件中多了两个“方法”!如下图所示:
现在看到的btnMe_MouseClick()与btnMe_MouseEnter()都是空方法。为了让控件能够响应用户操作,我们在这个文件中完善一下方法代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace first
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//鼠标进入按钮显示界面时,执行此方法
private void btnMe_MouseEnter(object sender,EventArgs e)
{
//产生随机数
Random r = new Random();
//为Left属性赋值,该属性表示控件左边缘与容器左边缘的距离
btnMe.Left = r.Next(0, this.Width - btnMe.Width - 5);
//返回一个指定范围内随机数,并赋值给btnMe对象的Top属性
btnMe.Top = r.Next(0, this.Height - btnMe.Height - 5);
}
private void btnMe_MouseClick(object sender, MouseEventArgs e)
{
this.Close();
}
}
}
至此,我们的WinForm简单小程序已经制作完成!
程序bug:随机数稍有不甚,按钮会越出窗口~
部分内容参考自《C#程序设计基础入门教程》——传智播客高教产品研发部
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)