C# 自定义传值窗体-适合多参数传值
将子窗体的值回传到父窗体中,或者最简单的需要一个设置参数的对话框,其作用也就是得到其中的参数。下面我们详细介绍实现的过程。
文章目录
- 一、定义一个事件类
- 二、在参数窗体中定义事件
- 三、订阅事件消息
一、定义一个事件类
首先,我们必须定义一个事件,父窗体可以订阅这个事件,并在事件触发时获取参数。下面是如何修改代码来实现这个功能:
首先,定义一个事件参数类和事件:
public class ParametersEventArgs : EventArgs
{public int Param1 { get; set; }public int Param2 { get; set; }public int Param3 { get; set; }public int Param4 { get; set; }public bool BoolParam { get; set; }
}
二、在参数窗体中定义事件
然后,在ParameterInputForm类中定义一个事件,由这事件来发布消息,当有事件ParametersEntered被触发,我们在父窗体的订阅者就能收到ParametersEntered发布的消息:
public partial class ParameterInputForm : Form
{// 定义事件public event EventHandler<ParametersEventArgs> ParametersEntered;// 其他代码保持不变...private void OkButton_Click(object sender, EventArgs e){// 获取输入值int param1;int param2;int param3;int param4;bool boolParam;if (int.TryParse(textBox1.Text, out param1) &&int.TryParse(textBox2.Text, out param2) &&int.TryParse(textBox3.Text, out param3) &&int.TryParse(textBox4.Text, out param4) &&bool.TryParse(checkBox.Checked.ToString(), out boolParam)){// 触发事件ParametersEntered?.Invoke(this, new ParametersEventArgs{Param1 = param1,Param2 = param2,Param3 = param3,Param4 = param4,BoolParam = boolParam});// 关闭表单this.Close();}else{MessageBox.Show("请输入有效的整数和布尔值。");}}
}
三、订阅事件消息
在父窗体中,你需要订阅这个事件,并在事件处理程序中获取参数。这个参数不是一个,那么我们就打包一起发过来,但是需要解包。ParameterForm_ParametersEntered订阅ParametersEntered触发的消息,parameterForm中的ParametersEntered,已有风吹草动就会通知ParameterForm_ParametersEntered,换句话说,ParametersEntered有触发,就会调用ParameterForm_ParametersEntered
public partial class MainForm : Form
{public MainForm(){InitializeComponent();// 实例化ParameterInputForm并订阅事件var parameterForm = new ParameterInputForm();//ParameterForm_ParametersEntered订阅ParametersEntered触发的消息parameterForm.ParametersEntered += ParameterForm_ParametersEntered; parameterForm.Show();}private void ParameterForm_ParametersEntered(object sender, ParametersEventArgs e){// 在这里处理参数int param1 = e.Param1;int param2 = e.Param2;int param3 = e.Param3;int param4 = e.Param4;bool boolParam = e.BoolParam;// 你可以在这里使用这些参数,例如显示它们MessageBox.Show($"参数1: {param1}, 参数2: {param2}, 参数3: {param3}, 参数4: {param4}, 布尔值: {boolParam}");}
}
总结:
在这个例子中,MainForm订阅了ParameterInputForm的ParametersEntered事件。当用户点击确定按钮并输入有效的数据后,ParameterInputForm会触发这个事件,并将参数传递给MainForm。然后MainForm中的ParameterForm_ParametersEntered方法会被调用,并可以使用这些参数。
相关文章:
C# 自定义传值窗体-适合多参数传值
将子窗体的值回传到父窗体中,或者最简单的需要一个设置参数的对话框,其作用也就是得到其中的参数。下面我们详细介绍实现的过程。 文章目录 一、定义一个事件类二、在参数窗体中定义事件三、订阅事件消息 一、定义一个事件类 首先,我们必须…...

Ubuntu20.04+ros-noetic配置Cartographer
一、概述 因为要配置激光SLAM,Cartographer属于激光雷达SLAM 中比较经典的一款,在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 (一)概述 使用平台是Windows的wsl2上的Ubuntu20.04子系统,…...

Visual Studio 2022 下载和安装
文章目录 概述一,下载步骤二,安装过程 概述 Visual Studio 提供 AI 增强功能,例如用于上下文感知代码补全的 IntelliSense 和可利用开源代码中的 AI 模式的 IntelliCode。 集成的 GitHub Copilot 提供 AI 支持的代码补全、聊天辅助、调试建议…...
在 Windows 环境下实现免密登录 Linux 服务器
在 Windows 环境下实现免密登录 Linux 服务器 1. 生成 SSH 密钥对2. 手动将公钥上传到服务器方法 1:使用 scp 传输公钥文件方法 2:使用 Windows 内置工具或编辑器手动复制 3. 测试免密登录4. 可能需要的工具 以下是在 Windows 中实现免密登录的步骤&…...

Computer Exercise
每日一练 单选题 在计算机机箱前面板接口插针上( C )表示复位开关。 A.SPK B.PWRLED C.RESET D.HDDLED每台PC机最多可接( B )块IDE硬盘。 A.2 B.4 C.6 D.8( …...

利用Stable Diffusion AI图像模型评估智能车模型算法表现(下篇)
今天小李哥将介绍亚马逊云科技的Jupyter Notebook机器学习托管服务Amazon SageMaker上,通过AI图像生成模型Stable Diffusion Upscale和Depth、向量知识库和LangChain Agent,生成用于AI 智能车模型训练的图像数据集并评估模型表现。 本系列共分为上下两篇…...
音视频入门基础:WAV专题(8)——FFmpeg源码中计算WAV音频文件AVStream的time_base的实现
一、引言 本文讲解FFmpeg源码对WAV音频文件进行解复用(解封装)时,其AVStream的time_base是怎样被计算出来的。 二、FFmpeg源码中计算WAV音频文件AVStream的time_base的实现 从《音视频入门基础:WAV专题(5)…...

springboot中的请求过滤filter与拦截interceptor分析
首先我们要定义一个类,实现标准的过滤器 import lombok.extern.slf4j.Slf4j;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;WebFilter("/*") Slf4j public class AuthFilter implements Filter {Overr…...
Node.js入门与生态全解析:包管理与构建工具详解
Node.js入门与生态全解析:包管理与构建工具详解 目录 🎯 包管理 使用 npm 和 yarn:项目依赖管理的利器创建和发布 npm 包:实现模块化与共享 ⚙️ 构建工具 使用 Webpack 和 Babel:高效打包与代码转换配置构建流程&am…...

828华为云征文|华为云Flexus X实例docker部署harbor镜像仓库
828华为云征文|华为云Flexus X实例docker部署harbor镜像仓库 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错…...
fedora siliverblue adb
开始 1、找到手机 usb 的 idV: $ lsusb ... Bus 001 Device 012: ID 22d9:2766 OPPO Electronics Corp. PECM30是 22d9 2、在 toolbox 外面添加 udev: sudo nano /etc/udev/rules.d/51-android.rulesSUBSYSTEM"usb", ATTR{idVendor}"…...
mybatisplus查询指定字段
使用mybatisplus查询指定字段 实体类 package com.test.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annota…...

探寻 IP 代理地址繁多之因
在当今的网络天地里,IP 代理服务随处可见,且令人称奇的是,它们常常手握海量的 IP 地址可供挑选。那么,究竟是什么原因使得 IP 代理拥有如此众多的地址呢?现在,就让我们一同深入探究这个神秘现象背后的缘由。…...
MyBatis常见面试题
文章目录 说说 MyBatis 执行流程?1. 加载配置文件和映射文件2. 构建 SqlSessionFactory3. 创建 SqlSession4. 调用 Mapper 方法5. 处理参数和结果映射6. 事务管理7. 释放资源简化流程图: MyBatis 和 Hibernate 有什么不同?1. **对象关系映射层…...
Swift 运算符
Swift 运算符 Swift 是一种强类型编程语言,由苹果公司开发,用于iOS、macOS、watchOS和tvOS应用程序的开发。Swift 运算符是其核心特性之一,它允许开发者执行各种数学和逻辑操作。本文将详细介绍 Swift 中的运算符,包括它们的功能、用法和类型。 Swift 运算符概述 Swift …...

PDF转PPT神器揭秘!3步操作,轻松打造2024年会议爆款PPT
现在是数字化的时代,PDF 和 PPT 对职场的人来说可重要了。PDF 文件格式稳,也好分享,所以大家都爱用。PPT 演示起来很厉害,在开会、讲座的时候特别管用。不过呢,要是有好多 PDF 文件,咋能快点把它们变成好看…...

✨机器学习笔记(一)—— 监督学习和无监督学习
1️⃣ 监督学习(supervised learning) ✨ 两种主要类型的监督学习问题: 回归(regression):predict a number in infinitely many possible outputs. 分类(classification)࿱…...

【Netty】实战:基于Http的Web服务器
目录 一、实现ChannelHandler 二、实现ChannelInitializer 三、实现服务器启动程序 四、测试 本文来实现一个简单的Web服务器,当用户在浏览器访问Web服务器时,可以返回响应的内容给用户。很简单,就三步。 一、实现ChannelHandler pack…...

4K4D: Real-Time 4D View Synthesis at 4K Resolution 学习笔记
本文是学习4K4D的笔记记录 Project Page:https://zju3dv.github.io/4k4d/ 文章目录 1 Pipeline1.1 特征向量的计算1.2 几何建模1.3 外观建模⭐1) 球谐函数SH模型2) 图像融合技术 1.4 可微分深度剥离渲染 2 Train(loss)…...

2024年 Biomedical Signal Processing and Control 期刊投稿经验最新分享
期刊介绍 《Biomedical Signal Processing and Control 》期刊旨在为临床医学和生物科学中信号和图像的测量和分析研究提供一个跨学科的国际论坛。重点放在处理在临床诊断,患者监测和管理中使用的方法和设备的实际,应用为主导的研究的贡献。 生物医学信…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...