WinForm窗体应用程序学习笔记(一)

由于控制台应用程序的运行结果都是通过控制台输出的,不能提供良好的用户体验,为此,C#提供了WinForm窗体应用程序。WinForm具有一系列丰富的控件,用于创建基于Windows的应用程序。每一个控件模型都相当于一个类,通过继承和扩展这些控件类来使Windows界面变的更加好看、更加具有交互性。

友情链接:

  • WinForm窗体应用程序学习笔记(一)
  • WinForm窗体应用程序学习笔记(二)
  • WinForm窗体应用程序学习笔记(三)

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类中提供了许多属性,这些属性都是控件的共同特征,具体如下表所示:

Control类的常用属性
属性 说明
Name 指示代码中用来标识该对象的名称
Text

与控件关联的文本

Visible 确定该控件是可见的还是隐藏的
BackColor 该控件的背景颜色
Cursor 指针移过该控件时显示的光标
Dock 定义要绑定到容器的控件边框
Enable 指示是否启用该控件
Font 用于显示控件中文本的字体
ForeColor 此控件的前景色,用于显示文本
Size 控件的大小
Tag 与对象关联的用户定义数据
TextAlign 将在控件上显示的文本的对齐方式

在Control类中,除了定义属性,还定义事件根据用户的操作引发相应的事件,开发人员可以根据不同的事件来编写具体的处理方法。具体如下表所示:

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#程序设计基础入门教程》——传智播客高教产品研发部

【C#】 WinForm窗体应用程序学习笔记 (一)相关推荐

  1. 小程序 pagescrollto_微信小程序学习笔记(三)-- 首页及详情页开发

    一.常用组件 在上一个章节中讲解了封装请求数据的模块,在此处请求轮播图的数据 1.首页轮播图数据的请求以及渲染 1.1 轮播图数据的请求 pages/home/home.js import 2 使用组 ...

  2. 微信小程序学习笔记(1)

    微信小程序学习笔记 1.小程序代码结构 2.逻辑层和视图层 3. 小程序的宿主环境(通信模型.运行机制.组件.API) 4. 数据绑定和事件绑定 1.小程序代码结构 当开发者新建一个工程时,项目文件包 ...

  3. 微信小程序学习笔记一 + 小程序介绍 前置知识

    微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...

  4. Linux0.12引导启动程序学习笔记(i386)

    // 主题:Linux0.12引导启动程序学习笔记(i386) // 作者:kevinjz2010@gmail.com // 版权:kevinjz原创 // 平台:80386 // 发布日期:2011 ...

  5. 微信小程序学习笔记(七)----简单文章推荐列表和分类图标的实现

    想要实现一个顶部是几篇纯文字的推荐文章,推荐文章下面是四个分类图标,具体实现出来是这个样子的,比较简单: 首先先来找一下素材,这几个图标是我在阿里巴巴图标库下载的,这里是下载地址: http://ww ...

  6. 小程序学习笔记(1)

    小程序学习笔记(1) 以下是学习期间记录的笔记: 10-18号晚上学习笔记: 小程序实际上是需要下载安装的,只是很小,用户基本上觉察不到 组件是具有一定的功能的代码的集合 移动端适配: 物理像素:是图 ...

  7. 第10课:底实战详解使用Java开发Spark程序学习笔记

    第10课:底实战详解使用Java开发Spark程序学习笔记 本期内容: 1. 为什么要使用Java? 2. 使用Java开发Spark实战 3. 使用Java开发Spark的Local和Cluster ...

  8. 自己的微信小程序学习笔记【3】——第三方UI库Lin-Ui的加载及使用

    其他微信小程序的学习笔记 自己的微信小程序学习笔记[1]--小程序开发工具的使用及项目文件说明 自己的微信小程序学习笔记[2]--从零开始新建项目 文章目录 其他微信小程序的学习笔记 前言 一.Lin ...

  9. 第10课:底实战详解使用Java开发Spark程序学习笔记(二)

    Maven下的Spark配置: http://maven.outofmemory.cn/org.apache.spark,这个网站提供了Spark core.Spark Streaming使用Mave ...

最新文章

  1. Python之父退休,C语言之父与世长辞,各大编程语言创始人现状盘点
  2. Scrum敏捷看板工具leangoo-销售流程管理
  3. 【吾日三省吾身】2015.5.24-涅槃行动第六天
  4. wcf客户端动态嗅探服务实例
  5. 想成为嵌入式程序员应知道的16个基本问题
  6. Knockout v3.4.0 中文版教程-9-计算监控-API参考
  7. 方便食品直接上菜 自嗨锅和西贝哪来的勇气?
  8. ×××应强制引进第三方支付
  9. 第8章 硬盘和显卡的访问与控制
  10. python 文本处理 保留中英文和标点符号_问一下处理英文文本
  11. php floatval_php floatval()函数的用法详解
  12. 大数据是如何改变制造业
  13. Julia: 如何一次性insert Array{Any,2} to SQLite DB?
  14. 【外刊阅读】1. There is no “gay gene“
  15. 软件工程系统建模总结
  16. SXF2019长方体的摆放
  17. Mean Rank 和Mean reciprocal rank
  18. Python压缩、减压7z文件
  19. 科技爱好者周刊(第 154 期):1982年的信息社会预言
  20. 记 · 寒风依旧 · 虎跑路和人生路

热门文章

  1. React Native 学习资源精选仓库
  2. 进销存设计与分析_收款单(11)
  3. GDOI2018 游记
  4. 算法基础2:求abc的全排列
  5. Mysql 5.7免密码登录
  6. 12月30日热烈欢迎软通动力参观武汉众嵌科技
  7. 职场求职系列之一-简历关
  8. JAVA-------构造器
  9. 1016 部分A+B C语言实现
  10. diff git 指定时间_Git diff 代码比较的高级技巧