C# 自定义传值窗体-适合多参数传值

2024-09-07 07:36

本文主要是介绍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# 自定义传值窗体-适合多参数传值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144459

相关文章

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如