首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何仅在关闭子窗体后执行代码?C#

在C#中,可以通过使用事件和委托来实现在关闭子窗体后执行代码的功能。具体步骤如下:

  1. 在子窗体的代码中定义一个事件,用于通知父窗体子窗体已关闭。可以使用内置的FormClosed事件或自定义事件。
代码语言:txt
复制
public event EventHandler ChildFormClosed;
  1. 在子窗体的关闭事件中触发该事件。
代码语言:txt
复制
private void ChildForm_FormClosed(object sender, FormClosedEventArgs e)
{
    ChildFormClosed?.Invoke(this, EventArgs.Empty);
}
  1. 在父窗体中订阅子窗体的关闭事件,并在事件处理程序中执行相应的代码。
代码语言:txt
复制
private void OpenChildFormButton_Click(object sender, EventArgs e)
{
    ChildForm childForm = new ChildForm();
    childForm.ChildFormClosed += ChildForm_Closed;
    childForm.Show();
}

private void ChildForm_Closed(object sender, EventArgs e)
{
    // 在子窗体关闭后执行的代码
}

通过以上步骤,当子窗体关闭时,父窗体会收到通知并执行相应的代码。

这种方法适用于Windows窗体应用程序中的子窗体关闭后执行代码的场景。腾讯云提供了丰富的云计算产品和服务,可以根据具体需求选择适合的产品。具体推荐的产品和产品介绍链接地址可以参考腾讯云官方文档或咨询腾讯云的客服人员。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 使用C#开发数据库应用程序

    对比: 组织代码的方式:C#使用命名空间(namespace),java使用包(package) 引入命名空间或包的关键字:C#使用using,java使用import 程序入口:C#使用Main...设置窗体:在调用打开窗体的Show()方法前,在代码中将窗体的MdiParent属性设为this】 例如: //用户单击菜单项时,出现创建学员用户窗口 private void tsmiNewStudent_Click...=this; addStudentForm.Show();//显示创建学员用户窗体 } (2)为父窗体添加窗体列表【在父窗体中添加一个菜单Name(tsmiWindows),添加一个"窗口"菜单项...,我们在程序的开头增加了一条引用命名空间的语句using System.Data.SqlClient; 6-3:异常处理 a.如何处理异常 语法: try { //包含可能出现异常的代码...DataGridView显示数据 (1)添加窗体的控件 (2)设置DataGridView的属性和个列的属性 (3)指定DataGridView的数据源 c.如何保存修改的数据 (1)增加"

    5.9K30

    C#之委托如此简单

    近期和几位做嵌入式开发的朋友闲聊过程中,一位朋友抱怨到:这C#太难用了,我想在N个窗体(或者是N个用户组件之间)传递值都搞不定,非得要定义一个全局变量来存储,然后用定时器来刷新值,太Low了。...一、对委托的理解 委托:同一个功能,可以根据不同的场景委托给不同的方法具体执行; 举个栗子:某位美食爱好妹子,通常自己做美食;找到男票,就男票做美食;换男票,就第二任男票做美食。...二、代码实现 上面的示例如何代码实现,这里就不展示了(真的很简单)。...下面我们换一个稍有难度和实际应用的示例,需求说明:主窗体显示一个列表,窗体增加数据(不关闭窗体的情况下),主窗体列表自动更新,且第二个窗体打开窗体内的列表也要同时更新。...事件的订阅与取消订阅,一般情况下可以在关闭窗体时取消订阅 三、回顾 1. 事件依赖委托,事件可以订阅和取消订阅,其订阅就是为事件增加委托。 2.

    62210

    单件模式Singleton来控制窗体被重复或多次打开

    问题描述:用了单件模式Singleton来控制窗体被重复或多次打开,最初是在MDI窗体中写方法,后来看别人的写的是属性,基本是一样的,都可以,然后想的是,项目中有诺多窗体,如果每个窗体都写一份,岂不太脑残...基类终于写好了,然后调试,发现确实可以控制窗体的打开个数,即被多次打开,但是呢,当窗体操作完成并关闭,,再次打开这个窗体时就会出现(无法访问已释放的对象)的错误。...首先,窗体的重复或多次打开问题解决了;然后呢,每个窗体打开时,只要一行代码就搞定了,不用每个窗体写一份属性,方法(其实质还是借鉴Singleton);最后呢,不会出现再次打开不能访问的问题,即无法访问已释放的对象的问题...以下是Singleton基类C#代码: using System; using System.Collections.Generic; using System.Linq; using System.Text...,比如Form1,代码如下: //Form1为MDI窗体 private void 会员管理ToolStripMenuItem_Click(object sender, EventArgs e)

    1K20

    C#记事本项目开发,一个可以实现批量操作的记事本!【附源码】

    C#的记事本开发需要我们定义两个窗体,也就是一个承载所有记事本的父窗体,一个具有记事本基本功能的窗体。 . 记事本子窗体 所以我们首先来聊一下具有记事本基本功能的窗体的开发。...在C#窗体应用中,我们可以直接对界面进行控件布局,不需要使用代码定义控件,在这一点上C#窗体应用开发是很不错的。...FormSon son = new FormSon(); //定义子窗体的父窗体 son.MdiParent = this; //显示窗体 son.Show(...); } 关闭窗体 关闭窗体时,我们所关闭的是当前处于最前方的活跃的窗体。...Form form = this.ActiveMdiChild; //关闭当前窗体 form.Close(); } 关闭全部窗体 点击关闭全部窗体时,我们会将已经打开的所有记事本窗体全部关闭

    1.9K10

    C# 窗体中调用父窗体中的方法(或多窗体之间方法调用)

    ”与“Chilid窗体”之间如何相互的调用方法。...C# 窗体中调用父窗体中的方法(或多窗体之间方法调用) 看似一个简单的功能需求,其实很多初学者处理不好的,很多朋友会这么写: C# Code: //父窗体是是frmParent,窗体是frmChildA...假设我们的项目不断在扩展,需要将父窗体窗体分开在不同的模块,这段代码就完了!因为父窗体模块必须引用窗体模块,而窗体需要用到frmParent的类,又要引用父窗体的模块!...(); } /// /// 窗体接口 /// public interface IMyChildForm { void Foo(); } 主窗体代码...;    } #endregion } //来源:C/S框架网(www.csframework.com) QQ:1980854898 窗体代码C# Code: ///<summary

    8.3K20

    C# 值得永久收藏的WPF项目实战(经典)

    01 简介 之前也写过好多篇CM框架相关的项目实战文章,比如: C# WPF框架Caliburn.Micro快速搭建 C# WPF框架Caliburn.Micro入门实例1 C# WPF MVVM项目实战...(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF MVVM模式下在主窗体显示窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面 C# WPF...其次,因为没有整体的构思,随着内容的增加,项目越来越显得笨重和凌乱,所以今天我重新搞了一个项目,希望以尽量少的代码,涵盖尽量多的知识点,帮助大家更好的理解和使用CM框架。...,看到这里你就可以关闭网页了!...>(); windowManager.ShowDialog(simpleContainerViewModel); CanSayHello和SayHello,只有CanSayHello条件满足才会执行

    4.9K10

    C# WPF MVVM模式Prism框架下事件发布与订阅

    01 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯...ShowNews(PersonInfo obj) { TxtLabel = $"{obj.ToString()}"; } 04 发布事件 //创建一个命令,当执行该命令时执行发布事件的逻辑...(list、Dictionary) C# WPF MVVM模式下在主窗体显示窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面...C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用...C# 无意间写了一段线程死锁的代码 C# 看懂这100+行代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式

    3.2K20

    使用C#开发屏幕保护程序步骤建议收藏

    大家好,又见面了,我是全栈君 本文介绍使用C#制作屏幕保护的方法,这个屏幕保护就是仿效视窗系统自带的字幕屏保。   屏幕保护程序的扩展名虽然是”scr”,但其实是一个可执行的”exe”文件。...下面就来探讨一下,用C#如何编写屏幕保护 的整个过程。   ...1).设定程序的窗体符合屏幕保护的要求:   由于屏幕保护程序就是一个可执行程序,所以在编写屏幕保护程序的时候,首先按照可执行程序来设计。...下面是对窗体属性的 设定,就可以满足屏幕保护的要求,具体如下: this.Name = “ScreenSaver” ; //窗体运行无边界 this.FormBorderStyle = FormBorderStyle.None...在 程序中,判断鼠标是否移动的思路是通过二个全局变量记录下,程序刚刚运行的时候的鼠标的位置(即:X和Y),当鼠标移动的时候,判断移动的位置和记录的 位置是否有出入,如果有出入,就关闭屏保。

    1.4K10

    WPF自学入门(八)WPF窗体之间的交互

    今天我们一起来看一下WPF窗体之间的交互-窗体之间的传值。有两个窗体,一个是父窗体,一个是窗体。要将父窗体的文本框中的值传递给窗体中的控件。我们该怎么实现?...窗体的界面: ? 要实现传值,我们首先要在窗体中定义一个可读可写的公用的字符串:getMessage。然后在父窗体中按下按钮的时候,定义一个字符串Message,用来存放输入框的文字。...再将Message中存放的输入框的文字传递给窗体中定义的可读可写的公用字符串getMessage。下面看一下实现的后台代码: 父窗体的后台代码: ? 窗体的后台代码: ?...这里我进行假设一个场景,依然还是有父子窗体窗体是父窗体中一个按钮的属性设置器,在窗体中添上要设置属性的值,然后按设置完成,窗体关闭,父窗体的相应按钮的属性也根据窗体中的设置值而改变!...其实这里只是实现这个场景的一种方法,也是比较简单的方法,用到的知识是C#中的委托。这里演示一个最简单的例子: 下面看一下具体实现 在上一个例子中的窗体新增一个按钮返回BtnReturn。

    2.4K10

    串口助手(简洁版)上位机软件零基础教程( C# + visual studio2017 )(二)

    在上篇博客中,我们完成了串口助手(简洁版)可视化窗体的设计,并且单击启动可以运行。但是光有外壳,没有灵魂。所以接下来我们将继续一步一步来编写上位机软件的程序部分。...—-》》》》执行定时器中断发生时对应的程序 不知道这样讲符不符合C#上位机真正的编程方式,但是对于初学者应该会有种豁然开朗的感觉。...咱们下面就一个事件,一个事件的写代码代码都有详细的注释,大家不要心虚。。。。。 1.窗口加载时事件(程序) 窗体刚刚加载出来,就是弹出软件窗口的一瞬间,算个事件吧。那怎么去编写这一段的程序呢?...在其中加入代码: ''' C# /*窗体加载时被调用*/ private void Form1_Load(object sender, EventArgs e)...2.textBox1.Text.Substring(i, 1);是字符串截取函数,截取完形成一个字符串,第一位是首字符地址,第二位是字符串长度。

    3.4K10

    利用委托实现winform多个窗体间的传值

    最近用C#做上位机程序开发,要实现这样一个功能: 父窗体创建了两个子窗体——窗体1和窗体2,窗体1产生的数据要在窗体2中显示出来。...1的消息要转发给窗体2,所以我们这里transfer(msg)做的事情就是把信息再转发出去,具体见后面解析。...父窗体转发消息给窗体2 这回等于是父窗体窗体发消息,所以我们在父窗体中定义委托和事件,然后让窗体2去订阅,代码如下,我们先去掉关于窗体1的那部分以方便观察。...也可以简写成如下格式 //transfer += form_Child2.getMsg; } 所以上面父窗体接收到窗体1消息的那个transfer(msg)...这时候transfer事件被触发,窗体2中的getMsg就会被执行 public void getMsg(string str) { BeginInvoke

    1.6K30

    WinForm学习

    继承:是一种体现代码重用性的特性,减少代码的冗余,但在 C# 语言中仅支持单继承。...多态:不仅体现了代码的重用性,也体现了代码的灵活性,它主要通过继承和实现接口的方式,让类或接口中的成员表现出不同的作用 支持跨平台 最早的 C# 语言仅能在 Windows 平台上开发并使用,目前最新的...;创建完成出现如下界面 3)点击启动按钮,出现自己编写的窗体界面 五、Winform菜单和工具栏 1)ListBox 列表框 2)ComboBox 下拉框列表...时用户可以通过回车键确认 Show和ShowDialog的区别 show是界面可以同时存在,第一个界面出现,出现第二个界面时可以点击第一个界面,而showDialog时出现第二个界面时无法点击第一个界面,必须关闭第二个界面才能点击第一个界面...六、Form初始化、布局 1.form初始化操作时是先执行构造方法中的InitializeComponent(),然后执行load(),包括实例化——属性设置——事件注册——将控件添加到当前窗体的Controls

    3.4K11
    领券