C#设计简单的WinForms多窗口应用程序[示例]

这个程序是一个简单的多窗口应用程序,使用了 Windows 窗体(WinForms)来创建用户界面。让我们逐步分析它的结构:

1. **命名空间(Namespace):**
   整个程序位于名为 `MultiWindowApp` 的命名空间中。命名空间是用于组织代码的一种方式,可以避免名称冲突并使代码更易于维护。

2. **程序入口(Main):**
   `Program` 类包含一个静态的 `Main` 方法,这是程序的入口点。在 `Main` 方法中,首先启用了视觉样式,然后设置了兼容的文本呈现方式,并通过创建并运行一个 `MainForm` 的实例来启动应用程序。

3. **主窗体(MainForm):**
   `MainForm` 类继承自 `Form` 类,表示应用程序的主窗体。在 `MainForm` 的构造函数中,调用了 `InitializeComponent()` 方法,这个方法初始化了主窗体中的控件和布局,并订阅了窗体加载事件。窗体加载时,会显示一个消息框,提示 "MainForm loaded successfully!"。主窗体还包含一个名为 `openNewWindowButton` 的按钮,当用户单击该按钮时,会打开一个新的 `ChildForm` 窗体。

4. **主窗体初始化方法(InitializeComponent):**
   `InitializeComponent()` 方法用于初始化主窗体中的控件和布局。在该方法中,创建了 `openNewWindowButton` 按钮,并设置了它的位置、大小和文本,并添加了一个事件处理程序 `openNewWindowButton_Click`。

5. **主窗体加载事件处理程序(MainForm_Load):**
   在窗体加载时调用的事件处理程序。在这个方法中,显示一个包含消息 "MainForm loaded successfully!" 的消息框。

6. **打开新窗口按钮点击事件处理程序(openNewWindowButton_Click):**
   当用户单击 `openNewWindowButton` 按钮时,会触发 `openNewWindowButton_Click` 方法。在这个方法中,创建了一个 `ChildForm` 的实例,并调用 `Show()` 方法显示新的子窗体。

7. **子窗体(ChildForm):**
   `ChildForm` 类继承自 `Form` 类,表示应用程序中的子窗体。在 `ChildForm` 的构造函数中,同样调用了 `InitializeComponent()` 方法进行初始化,并订阅了窗体加载事件。在窗体加载时,会创建一个名为 `closeButton` 的按钮,用于关闭子窗体。

8. **子窗体初始化方法(InitializeComponent):**
   `InitializeComponent()` 方法用于初始化子窗体中的控件和布局。在该方法中,创建了 `closeButton` 按钮,并设置了它的位置、大小和文本,并添加了一个事件处理程序 `closeButton_Click`。

9. **关闭按钮点击事件处理程序(closeButton_Click):**
   当用户单击 `closeButton` 按钮时,会触发 `closeButton_Click` 方法。在这个方法中,调用了 `Close()` 方法来关闭子窗体。

总体来说,这个程序展示了一个简单的多窗口应用程序的结构,主窗体可以打开子窗体,并且子窗体有一个按钮用于关闭自己。

using System;
using System.Drawing;
using System.Windows.Forms;namespace MultiWindowApp
{static class Program{[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new MainForm());}}public partial class MainForm : Form{private Button openNewWindowButton;public MainForm(){InitializeComponent();this.Load += MainForm_Load; // 订阅窗体加载事件}private void InitializeComponent(){this.openNewWindowButton = new Button();this.SuspendLayout();// // openNewWindowButton// this.openNewWindowButton.Location = new Point(12, 12);this.openNewWindowButton.Name = "openNewWindowButton";this.openNewWindowButton.Size = new Size(150, 30);this.openNewWindowButton.Text = "Open New Window";this.openNewWindowButton.Click += new EventHandler(openNewWindowButton_Click);// // MainForm// this.ClientSize = new Size(300, 200);this.Controls.Add(this.openNewWindowButton);this.Name = "MainForm";this.ResumeLayout(false);}private void MainForm_Load(object sender, EventArgs e){MessageBox.Show("MainForm loaded successfully!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);}private void openNewWindowButton_Click(object sender, EventArgs e){ChildForm childForm = new ChildForm();childForm.Show();}}public partial class ChildForm : Form{private Button closeButton;public ChildForm(){InitializeComponent();}private void InitializeComponent(){this.closeButton = new Button();this.SuspendLayout();// // closeButton// this.closeButton.Location = new Point(12, 12);this.closeButton.Name = "closeButton";this.closeButton.Size = new Size(150, 30);this.closeButton.Text = "Close";this.closeButton.Click += new EventHandler(closeButton_Click);// // ChildForm// this.ClientSize = new Size(300, 200);this.Controls.Add(this.closeButton);this.Name = "ChildForm";this.ResumeLayout(false);}private void closeButton_Click(object sender, EventArgs e){this.Close();}}
}

在C#中,Load() 方法通常用于窗体或控件加载时执行的初始化操作。当窗体或控件首次加载时,Load() 方法会在窗体或控件的生命周期中调用一次。

主要用途包括:

  1. 初始化界面: 在窗体或控件加载时,可以执行一些初始化操作,例如设置控件的属性、绑定数据、加载配置等。

  2. 准备数据: 可以在窗体或控件加载时加载所需的数据,例如从数据库、文件或网络中获取数据,并在加载完成后更新界面。

  3. 注册事件处理程序: 可以在加载时注册事件处理程序,以响应用户的交互操作,例如按钮点击、菜单选择等。

  4. 执行其他初始化任务: 除了上述任务之外,还可以执行其他与窗体或控件相关的初始化任务,以确保窗体或控件在加载完成后处于正确的状态。

总的来说,Load() 方法是在窗体或控件加载时执行的初始化操作的理想地点,可以用于确保窗体或控件的正确初始化和准备。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商社交新零售:创新引领新趋势,变革新零售思维格局-亿发

新零售O2O模式是如何颠覆传统零售商业模式? 传统电商出现瓶颈: 传统电商在发展过程中逐渐出现了瓶颈,主要表现在市场竞争激烈、用户获取成本上升、用户黏性下降等问题。传统电商往往只能通过价格竞争或促销活动来吸引用户,而这种…

重构数据访问层-优化数据访问的开发

重新整理了一下过去开发的框架,在准备开发新项目时候,重新整理了一下思路,感觉数据访问层还是很鸡肋。过去几年中,急于完成项目开发和交付,框架都是迭代过来的,虽然满足了开发需求,但是&#xf…

软考118-上午题-【软件工程】-能力成熟度模型

一、考试题型 选择题(13题) 二、能力成熟度模型CMM 能力成熟度模型CMM的研究目的是:提供一种评价软件承接方能力的方法,同时它可帮助软件组织改进其软件过程。 CMM 将软件过程改进分为以下5个成熟度级别: 1、初始级…

二叉树的遍历——bfs广度优先搜索

1、BinNode类的创建 (1)代码总览 ##(2)测试示例 2、二叉树的遍历 (1)图示 (2)代码总览 (3)测试示例

ai智能电销机器人的核心技术,工作原理和作用

科技快速发展的同时,带来了人工智能产品的普及。而ai智能电销机器人则成为推进电销行业的产物,那么ai智能电销机器人是如何帮助企业高效触客,有效地工作,效果又如何呢?我们一起来看看吧! 一、ai智能电销机器…

区块链与数字身份:探索Facebook的新尝试

在数字化时代,随着区块链技术的崛起,数字身份成为了一个备受关注的话题。作为全球最大的社交媒体平台之一,Facebook一直在探索如何利用区块链技术来改善数字身份管理和用户数据安全。本文将深入探讨Facebook在这一领域的新尝试,探…

二叉树的遍历的递归与非递归算法

一.二叉树的遍历: 按照一定规律对二叉树的每个结点进行访问且仅访问一次; 这里的访问:可以是计算二叉树中的结点数据,打印该结点的信息,也可以是对结点进行的任何其它操作! 为什么需要遍历二叉树&#x…

精品PPT-数据治理总体解决方案新版(免费下载)

1、知识星球下载: 如需下载完整PPTX可编辑源文件,请前往星球获取:https://t.zsxq.com/19F4dDDrv 2、免费领取步骤: 【1】关注公众号 方案驿站 【2】私信发送 数据治理新版 【3】获取本方案PDF下载链接,直接下载即可…

spring.rabbitmq.listener.simple.default-requeue-rejected = false 和放入死信队列的区别

目录 一、场景 二、使用 spring.rabbitmq.listener.simple.default-requeue-rejected false 2.1 特点 三、 放入死信队列 四、两种区别 一、场景 当我们使用RabbitMq的时候,我们如果业务中有异常,很有可能造成死循环,因为 在RabbitMQ和…

转让名称带中国的金融控股集团公司要多少钱

随着公司的发展和市场竞争的影响,越来越多的创业者希望注册一家好名称的公司,以提高企业知名度和竞争力。但是,注册中字头无地域公司需要满足一定的条件和流程。本文将对中字头无地域公司注册条件及流程进行详细的介绍。可以致电咨询我或者来…

U2004A是德科技U2004A功率传感器

181/2461/8938产品概述: Keysight U2004A (Agilent) USB 功率传感器可快速设置和测量,无需功率计,只需将 USB 传感器电缆插入 PC,即可使用 FREE Power Panel (N1918A) 软件控制 USB 功率传感器。 Keysight U2004A USB 功率传感器…

Astra深度相机在Ubuntu18.04系统下实现相机标定

问题: 当使用Astra相机的启动的指令启动相机后,使用rviz查看相机所发布的rgb数据时,在终端会出现如下的提示信息: Camera calibration file /home/car/.ros/camera_info/rgb_Astra_Orbbec.yaml not found. Camera calibration fil…

flood_fill 算法|图形渲染

flood fill 算法常常用来找极大连通子图,这是必须掌握的基本算法之一! 图形渲染 算法原理 我们可以利用DFS遍历数组把首个数组的值记为color,然后上下左右四个方向遍历二维数组数组如果其他方块的值不等于color 或者越界就剪枝 return 代码…

【http】常见http headers

相关文章:http 状态码 和http methods及restful api 常见http headers 1 常见的Request Headers Accept 浏览器可接收的数据格式 Accept-Encoding 浏览器可接收的压缩算法,gzip Accept-language 浏览器可接收的语言 Connection:keep-alive 一次TCP连接…

react的闭包陷阱

React 的闭包陷阱是指在使用 React Hooks 时,由于闭包特性导致在某些函数或异步操作中无法正确访问到更新后状态或 prop 的值,而仍旧使用了旧值。下面通过几个代码示例来具体说明闭包陷阱的几种常见情形: 示例 1: useState 闭包陷阱 import…

【进阶版】基于KubeAdm搭建多节点K8S集群,并使用Rancher导入K8S集群

1、准备工作(所有节点) 1.1、各节点服务器设置主机名 HostName # 192.168.8.10,主机名设置为:master01 hostnamectl set-hostname master01 # 192.168.8.11,主机名设置为:node01 hostnamectl set-hostname node01 # 192.168.8.20,主机名设置为:master02 hostnamectl …

自然语言处理-词向量模型-Word2Vec

目录 一、前言 二、词向量 三、词向量的实际意义 四、模型的整体框架 五、构建输入数据 六、不同模型的对比 七、负采样方案 八、总结 一、前言 计算机只认识数值数字,那么怎么认识自然语言呢???答案就是将自然语言转换转…

git查看单独某一个文件的历史修改记录

git查看单独某一个文件的历史修改记录 git log -p 文件具体路径 注意,Windows下默认文件路径分隔符是 \,在git bash 里面需要改成 /。 git基于change代码修改与提交_git change-CSDN博客文章浏览阅读361次。git cherry-pick:复制多个提交comm…

HiveSQL之lateral view

lateral view是hiveQL中的一个高级功能,用于和表生成函数一起,来处理嵌套数组和结构的数据,特别是在处理复杂的数据结构如JSON或数组内嵌套数组时特别有用。它允许用户在每一行上应用TGF(表生成函数),将生成…

java实现UDP数据交互

1、回显服务器 服务器端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class UDP_Server {private DatagramSocket socketnull;public UDP_Server(int port) throws SocketExcepti…