C# 编写 WinForm 窗体应用程序(第一期)

2023-05-16

C# 编写 WinForm 窗体应用程序(第一期)

文章目录

  • C# 编写 WinForm 窗体应用程序(第一期)
    • WinForm窗体应用程序简述
    • C#创建WinForm窗体应用程序
    • C#窗体属性
      • (1)创建一个名为 TestForm 的窗体
      • (2) 设置 TestForm 窗体的属性
      • (3) 设置 TestForm 窗体为启动窗体
    • C#窗体事件
      • (1) 新建窗体
      • (2) 添加事件
      • (3) 添加事件处理代码
      • (4) 设置启动窗体
    • 结束语

WinForm窗体应用程序简述

在这里插入图片描述

WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。C# WinForm 编程需要创建「Windows窗体应用程序」项目。

.NET 提供了大量 Windows 风格的控件和事件,我们可以直接拿来使用,上手简单,开发快速。

Windows 窗体应用程序是 C# 语言中的一个重要应用,也是 C# 语言最常见的应用。这套 C# WinForm 教程将教会大家如何使用 WinForm 进行界面设计,并绑定对应的事件,开发出一个实用的客户端。

对于每一个使用过 Windows 操作系统的读者来说,Windows 应用程序是不会陌生的。使用 C# 语言编写的 Windows 应用程序与 Windows 操作系统的界面类似,每个界面都是由窗体构成的,并且能通过鼠标单击、键盘输入等操作完成相应的功能。

C#创建WinForm窗体应用程序

在 Visual Studio 2019 编译器中创建 Windows 窗体应用程序的步骤与创建控制台应用程序的步骤类似,在 Visual Studio 2019 编译器的开始页面中,依次选择创建新项目→C#→Windows→Windows Forms App (. NET),会弹出如下图所示的界面。
在这里插入图片描述
弹出上图所示的对界面之后,点击下一步→更改项目名→更改项目路径→点击将解决方案和项目放在同一目录中→点击创建。创建完了后Visual Studio 2019编译器中打开项目所在的目录。(本人建议用Visual Studio Code 2021编译器中编译WinForm窗体应用程序。)
在每一个 Windows 窗体应用程序的项目文件夹中,都会有一个默认的窗体程序 Form1.cs,并且在项目的 Program.cs 文件中指定要运行的窗体。
Program.cs 文件的代码如下:

static class Program
{
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

在上述代码的 Main 方法中的: • 第 1 行代码:用于启动应用程序中可视的样式,如果控件和操作系统支持,那么 控件的绘制就能根据显不风格来实现。
• 第 2 行代码:控件支持 UseCompatibleTextRenderingproperty 属性,该方法将此属 性设置为默认值。
• 第 3 行代码:用于设置在当前项目中要启动的窗体,这里 new Form1() 即为要启动的窗体。

在 Windows 窗体应用程序中界面是由不同类型的控件构成的。

C#窗体属性

WinForm窗体的常用属性如下表所示。

属性作用
Name用来获取或设置窗体的名称
WindowState获取或设置窗体的窗口状态,取值有3种,即Normal(正常)、Minimized(最小化)、Maximized(最大化),默认为 Normal,即正常显示
StartPosition获取或设置窗体运行时的起始位置,取值有 5 种,即 Manual(窗体位置由 Location 属性决定)、CenterScreen(屏幕居中)、WindowsDefaultLocation( Windows 默认位置)、WindowsDefaultBounds(Windows 默认位置,边界由 Windows 决定)、CenterParent(在父窗体中居中),默认为 WindowsDefaultLocation
Text获取或设置窗口标题栏中的文字
MaximizeBox获取或设置窗体标题栏右上角是否有最大化按钮,默认为 True
MinimizeBox获取或设置窗体标题栏右上角是否有最小化按钮,默认为 True
BackColor获取或设置窗体的背景色
BackgroundImage获取或设置窗体的背景图像
BackgroundImageLayout获取或设置图像布局,取值有 5 种,即 None(图片居左显示)、Tile(图像重复,默认值)、Stretch(拉伸)、Center(居中)、Zoom(按比例放大到合适大小)
Enabled获取或设置窗体是否可用
Font获取或设置窗体上文字的字体
ForeColor获取或设置窗体上文字的颜色
Icon获取或设置窗体上显示的图标

下面通过实例来演示窗体属性的应用。
[实例]创建一个名为TestForm的窗体,并完成如下设置。

  • 窗体的标题栏中显示“第一个窗体”。
  • 窗体中起始位置居中。
  • 窗体中设置一个背景图片。
  • 窗体中不显示最大化和最小化按钮。

实现题目中要求的窗体,具体步骤如下。

(1)创建一个名为 TestForm 的窗体

创建一个 Windows 应用程序 Windows-2,然后右击该项目,在弹出的右键菜单中选择“添加新项”命令。

(2) 设置 TestForm 窗体的属性

TestForm 窗体的属性设置如下表所示。

属性属性值
NameTestForm
StartPositionCenterScreen
Text第一个窗体
MaximizeBoxFalse
MinimizeBoxFalse
Backgroundimagewindow_2.jpg
BackgroundlmageLayoutStretch

在上述属性中除了背景图片 (Backgroundimage) 属性以外,其他属性直接添加上表中对应的属性值即可。

设置背景图片属性 (Backgroimdlmage) 的方法是单击 Backgroundimage 属性后的按钮,在弹出的对话框中单击“导入”按钮。

如下图所示, 选择图片 window_2.jpg 所在的路径,单击“确定”按钮即可完成背景图片属性的设置。
在这里插入图片描述

(3) 设置 TestForm 窗体为启动窗体

每一个 Windows 窗体应用程序在运行时仅能指定一个启动窗体,设置启动窗体的方式是在项目的 Program.cs 文件中指定。具体的代码如下:

static class Program
{
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new TestForm());    //设置启动窗体
    }
}

完成以上 3 步后按 F5 键运行程序,效果如下图所示:
在这里插入图片描述

C#窗体事件

在窗体中除了可以通过设置属性改变外观外,还提供了事件来方便窗体的操作。

在打开操作系统后,单击鼠标或者敲击键盘都可以在操作系统中完成不同的任务,例如双击鼠标打开“我的电脑”、在桌面上右击会出现右键菜单、单击一个文件夹后按 F2 键可以更改文件夹的名称等。 实际上这些操作都是 Windows 操作系统中的事件。

在 Windows 窗体应用程序中系统已经自定义了一些事件,在窗体属性面板中单击闪电图标即可查看到窗体中的事件,如下图所示:
在这里插入图片描述
窗体中常用的事件如下表所示:

事件作用
Load窗体加载事件,在运行窗体时即可执行该事件
MouseClick鼠标单击事件
MouseDoubleClick鼠标双击事件
MouseMove鼠标移动事件
KeyDown鼠标按下事件
KeyUp鼠标释放事件
FormClosing窗体关闭事件,关闭窗体时发生
FormClosed窗体关闭事件,关闭窗体后发生

下面通过实例来演示窗体中事件的应用。

【实例】通过窗体的不同事件改变窗体的背景颜色。

在本例中采用的事件分别是窗体加载事件 (Load)、鼠标单击事件 (MouseClick)、鼠标双击事件 (MouseDoubleClick)。

实现该操作的步骤如下:

(1) 新建窗体

在C#窗体属性中使用的 Windows-2 项目中添加一个名为 ColorForm 的窗体。

(2) 添加事件

右击该窗体,在弹出的右键菜单中选择“属性”命令,然后在弹出的面板中单击闪电图标进入窗体事件设置界面。

在该界面中依次选中需要创建的事件,并双击该事件右侧的单元格,系统会自动为其生成对应事件的处理方法,设置后的属性面板如下图所示:
在这里插入图片描述
设置好事件后会在 ColorForm 窗体对应的代码文件中自动生成与事件对应的 4 个方法, 代码如下:

public partial class ColorForm : Form
{
    public ColorForm()
    {
        InitializeComponent();
    }

    private void ColorForm_MouseClick(object sender, MouseEventArgs e)
    {

    }

    private void ColorForm_MouseDoubleClick(object sender, MouseEventArgs e)
    {

    }

    private void ColorForm_Load(object sender, EventArgs e)
    {

    }
}

在执行不同事件时,系统会自动执行事件所对应方法中的内容。

(3) 添加事件处理代码

在本例中每个事件完成的操作都是更改窗体的背景颜色,窗体的背景颜色所对应的属性是 BackColor。

除了可以在属性面板中设置外,使用代码设置的方式是使用 this 关键字代表当前窗体的实例,BackColor 属性类型是 Color 枚举类型的,代码如下:

this.BackColor = Color.Red;

上面的代码是将窗体的背景颜色设置为红色。

下面分别将类似代码添加到每一个事件中,代码如下:

public partial class ColorForm : Form
{
    public ColorForm()
    {
        InitializeComponent();
    }

    private void ColorForm_MouseClick(object sender, MouseEventArgs e)
    {
        //设置窗体背景颜色为黑色
        this.BackColor = Color.Black;
    }

    private void ColorForm_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        //设置窗体背景颜色为蓝色
        this.BackColor = Color.Blue;
    }

    private void ColorForm_Load(object sender, EventArgs e)
    {
        //设置窗体颜色为红色
        this.BackColor = Color.Red;
    }
}

(4) 设置启动窗体

在 Windows-2 项目的 Program.cs 类中将 ColorForm 窗体设置为启动窗体,代码如下:

static class Program
{
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new ColorForm());    //设置启动窗体
    }
}

执行上面的代码,效果如下图所示:
在这里插入图片描述

结束语

各位互联网上的同事、同仁、同学们,C# 编写 WinForm 窗体应用程序(第一期)到这里就结束了。码字不易,读完了这篇博客在评论区里留下你的真心话,甩给作者一个赞再走呗!👍👍👍
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 编写 WinForm 窗体应用程序(第一期) 的相关文章

随机推荐

  • 以Linux认识的方式写Linux驱动之字符设备驱动

    首先我们需要知道的是Linux内核干了什么我们不关心 xff0c 我们开发驱动程序 xff0c 只关心怎么才能让Linux认识我们的驱动 xff0c 当然 xff0c 对应的驱动也有对应的应用程序 xff0c 否则 xff0c 开发这个驱动
  • 关于linux的filp->private_data解释

    首先给出filp的结构体 xff1a struct file struct file union struct list head fu list 文件对象链表指针linux include linux list h struct rcu
  • 呐,这不就是你要的C++后台开发学习路线吗?

    校招形势 在去年结束的秋季招聘中 xff0c 后台开发或服务器开发的岗位需求一度火热 xff0c 甚至超过了算法岗 不少同学从诸神黄昏的算法岗战场上退下 xff0c 转向更偏向工程能力的后台开发岗 xff0c 从而造成后台开发岗位竞争的大爆
  • 了解这些C++常用库,或许能够帮你找到合适的个人项目!

    缺项目的校招同学 xff0c 或许可以从常用库或框架中寻找能够实现个人项目的题目 文 Amazing 图 Amazing 在求职的时候 xff0c 简历上项目会直接影响能否获得笔 面试机会 但是部分同学在书写简历的时候 xff0c 往往都觉
  • java 打包部署服务器时upd或tcp server接收不到网络调试助手的数据,出现问题的可能性

    这里以upd server端为例子 服务器中的upd接收不到本地网络调试助手发过去的可能大概有以下几种可能 1 网络调试助手中的ip 端口地址没有写好 最好是127 0 0 1 本地IP地址192 168 X X 或者外网地址都试一试 2
  • 9. 对象指针与对象数组

    一 对象指针 声明形式 xff1a 类名 对象指针名 Clock c 8 3 10 Clock ptr ptr 61 amp c 通过指针访问对象成员 xff08 一般类的属性都是封装起来的 xff0c 因此通常是通过指针访问成员函数 xf
  • 使用小觅相机标准入门版运行vins

    文章目录 运行步骤概括详细步骤第一步 xff1a 下载相机驱动并编译第二步 xff1a 下载源码并编译第三步 xff1a 更新源码中的配置文件3 1 获得相机与IMU参数3 2 xff1a 修改源代码的参数文件 第四步 xff1a 运行vi
  • Linux/Centos Mondo 一键部署、镜像恢复,快速部署

    一 简介 Mondo Rescue是一个开源免费的故障恢复和备份工具 xff0c 用户可以轻松地创建系统 xff08 Linux或Windows xff09 克隆或备份的ISO镜像 xff0c 可以将这些镜像存放在CD DVD 磁带 USB
  • 嵌入式实时操作系统uC/os-II(十四)-消息邮箱及其操作

    消息邮箱的定义 把数据缓冲区的指针赋给事件控制块成员 OSEventPtr xff0c 同时使事件控制块的成员 OSEventType 为常数 OS EVENT TYPE MBOX xff0c 则该事件控制块就叫做消息邮箱 消息邮箱的数据结
  • iOS Expected ';' after top level declarator

    项目中编译出现iOS Expected 39 39 after top level declarator 原因 xff1a 未导入UIKit框架 转载于 https www cnblogs com StevenHuSir p 1044602
  • 嵌入式实时操作系统uC/os-II(十四)-消息队列

    消息队列 消息队列由三部分组成 xff1a 事件控制块 消息队列 消息 当事件控制块成员 OSEventType 值为 OS OSEVENT TYPE Q 时 xff0c 该事件控制块代表一个消息队列 消息队列的数据结构如图 6 1所示 从
  • 嵌入式实时操作系统uC/os-II(十六)-信号量集

    信号量定义 uC OS II 提供了可处理多个信号量的信号量集 其实意图如图 7 1 所示 图 7 1 信号量集的示意图 从图中可以看到 xff0c 信号量实质上就是一个多输入 多输出的组合逻辑 其输入为其他任务发出的多个信号 xff0c
  • 基于深度学习的图像识别,实现APP自动打麻将

    互联网改变了我们的生活 xff0c 现在连打麻将都在网上打了 进几年发现身边的很多朋友都在网上玩一款四川麻将APP 平时没事的时候我也玩玩 xff0c 我是一个写了几年程序的码龙 xff0c 突然有一天我有个想法我能不能用我的专业来解放我的
  • PHP常用设计模式

    单例模式 单例模式顾名思义 xff0c 就是只有一个实例 作为对象的创建模式 xff0c 单例模式确保某一个类只有一个实例 xff0c 而且自行实例化并向整个系统提供这个实例 单例模式的特点 xff1a 三私一共 xff1a 1 私有的静态
  • 飞行控制器固件项目-对比介绍(Ardupilot、PX4、LibrePilot、OpenPilot)

    ArduPilot与Pixhawk什么关系 https zhuanlan zhihu com p 109639638 无人机开源项目 8个开源无人机项目 https blog csdn net cuml0912 article detail
  • 各种控制方法在抗干扰方面的区别

    一 由来 自适应控制 AdaptiveControl AC xff1a AC旨在处理由结构参数扰动引起的不良影响 AC的思想是首先在线识别受控系统的模型参数 xff0c 然后根据识别的模型参数调整控制参数以获得良好的性能 AC在处理模型参数
  • 【深入理解】export和module.export的区别

    内部原理 exports 61 module exports 61 exports 是module exports的引用 xff0c 怎么理解这句话呢 xff1f 大概就是 var a 61 var b 61 a a 和 b 之间的区别吧
  • 如何保证Service在后台不被杀死?

    一 前期基础知识储备 xff08 1 xff09 为什么要保证后台Service不被杀死 xff1f 提高应用存在感 对于大厂的应用来说 xff0c 其程序 活着 不是问题 xff0c 但是为了带来更好的用户体验 xff0c 提高用户粘性
  • mybatis generator时碰到的错误及解决办法

    这篇博客简单记录下自己使用mybatis generator时碰到的错误及解决办法 本人是在macOS下进行的下列操作 问题1 mybatis generator Cannot connect to database 解决办法 xff1a
  • C# 编写 WinForm 窗体应用程序(第一期)

    C 编写 WinForm 窗体应用程序 第一期 文章目录 C 编写 WinForm 窗体应用程序 第一期 WinForm窗体应用程序简述C 创建WinForm窗体应用程序C 窗体属性 1 创建一个名为 TestForm 的窗体 2 设置 T