C# Winform教程(二):基础窗口程序

1、介绍

winform应用程序是一种智能客户端技术,我们可以使用winform应用程序帮助我们获得信息或者传输信息等。

2、常用属性

Name:在后台要获得前台的控件对象,需要使用Name属性。
Visible:指示一个控件是否可见、
Enable:指示一个控件是否可用
WordWarp:控制文本框是否自动换行

3、创建一个简单的窗体Form1

如图,添加一个窗体Form1,并给窗体添加按钮和标签元素。

4、事件应用

需求

点击按钮弹出窗体2,弹出另外一个窗体Form2

实现

首先,新建一个窗体,并将窗体名称改为我是窗体2,如下图:

我们可以通过Text属性修改窗体的名称,修改Icon属性设置窗体的图标

要想通过窗体1中的按钮,弹出窗体2,必须给按钮绑定一个点击事件button2_Click

首先实例化一个窗体frm2,然后调用窗体的ShowDialog()方法弹出窗体2

c 复制代码
private void button2_Click(object sender, EventArgs e)
        {
            //在内存中创建窗体2
            Form2 frm2 = new Form2();

            frm2.ShowDialog();
        }

实现效果

我们在窗体2中再次添加一个按钮弹出窗体3,并给按钮添加点击事件,使之弹出窗体3

通过以下代码给按钮弹出窗体3添加点击事件:

c 复制代码
private void button1_Click(object sender, EventArgs e)
        {
            Form3 frm3 = new Form3();
            frm3.Show();
        }

5、如何关闭所有窗口

只有关闭主窗体,才能关闭所有窗口,在main函数当中创建的窗体对象,我们称之为这个窗体应用程序的主窗体,也就意味着当你将主窗体关闭后,整个应用程序也就关闭了。在本例中,Form1就是主窗口

所以,我们只需要关闭窗体1,就会关闭所有窗体。我们可以在加载窗体1的时候,将窗体对象放到类中的静态字段中。首先创建一个Text.cs类:

c 复制代码
public static class Test
    {
        public static Form1 _fr1Test;
    }

接着在加载窗体1的时候,将窗体对象放到静态字段_fr1Test中。代码添加到Form1.cs中:

c 复制代码
/// <summary>
        /// 但加载窗体的时候 将窗体对象放到Test类中的静态字段中
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            Test._fr1Test = this;
        }

最后,我们就可以正常进行事件处理了。在窗体3中添加按钮:关闭所有窗体,并给按钮添加点击事件,在Form3.cs中添加以下代码:

c 复制代码
/// <summary>
        /// 关闭主窗体
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            //需要拿到当前主窗体的对象
            //Form1 frm1 = new Form1();
            //frm1.Close();

            //this.Close();
            Test._fr1Test.Close();
        }
相关推荐
IT小馋猫3 分钟前
Linux 企业项目服务器组建(附脚本)
linux·服务器·网络
阿政一号8 分钟前
Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
linux·运维·服务器·进程间通信
啊哦1111 小时前
配置防火墙和SELinux(1)
linux·服务器·网络
艾妮艾妮1 小时前
C语言常见3种排序
java·c语言·开发语言·c++·算法·c#·排序算法
A charmer1 小时前
【Linux】文件系统知识梳理:从磁盘硬件到文件管理
linux·运维·服务器
卡戎-caryon2 小时前
【Linux网络与网络编程】03.UDP Socket编程
linux·服务器·网络·笔记·单例模式·udp·网络通信
小码编匠2 小时前
.NET 验证码生成神器基于 SkiaSharp 的高性能方案
后端·c#·.net
专注VB编程开发20年2 小时前
Aspose.words,Aspose.cells,vb.net,c#加载许可证,生成操作选择:嵌入的资源
c#·word·.net·vb.net
andy55202 小时前
.NET 使用 WMQ 连接Queue 发送 message 实例
xml·c#·wmq·c# 连接wmq·发送消息到wmq
破罐子不摔2 小时前
【C#使用S7.NET库读取和写入西门子PLC变量】
java·c#·.net