【解惑】C#父窗体子窗体

这个问题我当时学的时候也困惑了好久,今天看见有人问就好好解释下吧~

【问】父窗体调用子窗体,怎么显示子窗体关闭父窗体? 【答】在不牵扯到线程的情况下,主窗体是不能关闭的,一关闭程序就退出了,应该隐藏,提供两种方法: 最简单的方法:

【父窗体中加】
Form2 f2 = new Form2();
f2.Show();
this.Hide();
【扩】因为主窗体只是隐藏,不是真正意义上的关闭  Application.Exit(); //应用退出
————————————————————
常用方法:(这个方法,当你关闭子窗体还会返回父窗体)
【父窗体中加】
Form2 f2 = new Form2();
f2.ShowDialog(this);//把当前窗体当做消息框
【子窗体中加】
加载的时候:this.Owner.Hide(); 父窗体隐藏
关闭的时候:this.Owner.Show(); 父窗体显示

防止你不理解,我做了2个例子,源码如下:http://pan.baidu.com/s/1jG42pee
感觉太空了~~算了贡献几枚资源吧~
 C#Winform实例   http://pan.baidu.com/s/14cGhg
你爱不爱我-源码  http://pan.baidu.com/s/1gd3RG8F
C#计算器-源码  http://pan.baidu.com/s/1dD4C2zB
 SocKet网络编程客户端源码+服务器源码  http://pan.baidu.com/s/1dDkZB9Z
 面向过程_飞行棋游戏源码  http://pan.baidu.com/s/1hql88IC
01.手动打造自己的简易浏览器-源码  http://pan.baidu.com/s/1bnGQOsn
02.手动打造二维码自动生成器-源码  http://pan.baidu.com/s/1jGl46kI
03.手动打造自己的图片查看器-源码  http://pan.baidu.com/s/13vSXC 04.打造抽奖抽名之类的系统--源码  http://pan.baidu.com/s/1sjudRUt
05.手动打造自己的繁简互转器--源码 http://pan.baidu.com/s/1eQCbo9k
06.打造自己的MD5加密小工具--源码 http://pan.baidu.com/s/1pJLmraj  07.打造自己的C#远控系列软件 http://pan.baidu.com/s/1qWFKJhU 更多继续看我小白C#WinForm系列就Ok了~~

时间: 2024-10-10 09:27:48

【解惑】C#父窗体子窗体的相关文章

C# WinForm 父窗体 子窗体 传值

C# WinForm 父窗体 子窗体 传值 本次示例效果如下:Form1为父窗体(包含textBox1.button1)Form2为子窗体(包含textBox2.button2) 父窗体给子窗体传值==================1.点击Form1的button1 打开Form2  父窗体给子窗体传值 可以调用重载子窗体的构造函数 直接传入相关数值 public partial class Form1 : Form    {        public Form1()        {   

C#父、子窗体间传值等

这是老生常谈的一个问题,百度上太多方法了,对错先不说.只想介绍最简单.明了的方法 这里介绍两种方法: 1.无参 2.有参 前提: 1.不管什么方法,窗体间传值,要被调用 的方法.控件.函数等等,修饰符都要先设置为Public 2.新建父.子两个窗体 主窗体 Main: 子窗体 Child: 一,无参(大部分人喜欢用这种) 只介绍一点:Owner属性,VS的解释:获取或者设置拥有此窗体的窗体   ,换种通俗的说法,说明它支持读取和修改. Main后台代码: namespace MainChild

(转载)c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值

第一种方法: 用委托,Form2和Form3是同一组 Form2 C#代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace TestMouseMove { public delegate void

Winfrom子窗体刷新父窗体

本人比较懒,直接从网上转载了一篇比较合适的文章,只是文章格式有点乱,地址是 http://aspnet.blog.163.com/blog/static/17515510920121126104433237/ 调用窗体(父):Form1,被调用窗体(子):Form2 方法1:   所有权法//Form1://需要有一个公共的刷新方法public   void   Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为Form1Form2   f2   =

Winform子窗体刷新父窗体

调用窗体(父):Form1,被调用窗体(子):Form2方法1:   所有权法//Form1://需要有一个公共的刷新方法public   void   Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为Form1Form2   f2   =   new   Form2()   ;f2.Owner   =   this;f2.ShowDialog()   ;//Form2://在需要对其调用者(父)刷新时Form1   f1   ;f1   =  

Delphi MDI程序 父窗体如何调用当前活动子窗体的函数/过程

一个MDI文本文件编辑器打开了N个子窗体子窗体的.pas文件有一些public的过程和函数我想在父窗体调用当前活动的子窗体函数我用Self.ActiveChildForm无法调用直接frmEdit.xxxx运行出错求大家指导,谢谢! 回复于: 2013-01-21 15:31:31 将子窗口的函数定义为类函数calss function a(const s: string): Boolean; 有两种解决办法,一种就是上楼说的,定义成class function静态方法,第二种就是普通的方法:D

子窗体和父窗体双向传值——C#窗体传值方法总结

简介 在很多场景下,我们的程序需要完成窗体间的传值功能,有时候是父窗体→子窗体单向传值.子窗体→父窗体传值甚至是,也有时候我们需要父窗体?子窗体双向传值. 在本文中主要介绍一些能够实现双向传值的方法,能够双向传值的方法也能够实现单向传值. 本文的所有源码都可以在GitHub上下载. 本文介绍的方法仅限于我自己知道并且实现过的,我相信还有很多我并不知道的方法,因此也许在很多朋友眼中本文的内容是浅显甚至可笑的,希望路过的各方朋友不吝赐教,我也希望不断地进步! 方法1:Public字段+ShowDia

C# 在子窗体调用父窗体的值(转)

1.在父窗体中 public delegate void SetVisiableHandler();//定义委托类型 注意此委托定义在namespace下一级,在form类外 private void button1_Click(object sender,EventArgs e)//单击事件,打开子窗体 { Form2 frm = new Form2(new SetVisiableHandler(SetVisiable)); frm.Show(); } private void SetVisi

mdi父窗体如何向子窗体发送数据

Q: mdi父窗体如何向子窗体发送数据,一般都有哪些方式? A: 对于最通常的MDI窗口, WinForm在Form 类的属性中提供了Form.MdiChildren这个属性来返回所有的子窗口. 这样我们只要继承Form类, 然后使用这个类来新建子窗口.public class MyChildForm : Form{} 然后, 通过MdiChildren属性来获取子窗口, 调用子窗口类中定义的公共方法, 或者公共属性来传送数据即可. 第二种方法, 我们还可以在MDI parent form中定义