父窗口关闭子窗口最简单实用的方法.不用这么复杂

业余程序员 2008-06-30 09:19:10
MainFrom - 父窗口 Button1 - 打开子窗口 Button2 - 关闭子窗口
SingleFrom - 子窗口

以下方法就可以解决这个问题.

MainFrom 中的代码
------------------------------
using ****
namespace DOWNMail
{
public class MainFrom : System.Windows.Forms.From
{
private System.Windows.Forms.Button button1; //打开子窗口
private System.Windows.Forms.Button button2; //关闭子窗口
SingleFrom NewFrom =new SingleFrom(); //在全局定义当中就把这个事件先定义出来.

private void button1_Click(object sender, System.EventArgs e)
{
NewFrom.show();
}

private void button2_Click(object sender, System.EventArgs e)
{
NewFrom.close();
}

}
}
...全文
351 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
业余程序员 2008-06-30
  • 打赏
  • 举报
回复
5楼的说法也是对的,但是他指的有一些片面性,主要是看自己的程序结构和问题所在的情况去解决.
业余程序员 2008-06-30
  • 打赏
  • 举报
回复
传值问题.如果是在打开的时候就进行传值那就比较简单.其本上没有什么难点.
在子窗口当中定义需要传值的PUBLIC 项目就可以进行传值
子窗口 SingleFrom 中定义需要传值的个PUBLIC项目

public System.Windows.Forms.Button Textbox1; //子窗口中的一个本文框


父窗口 MainFrom 中的BUTTON1中传值到子窗口
private void button1_Click(object sender, System.EventArgs e)
{
if(!NewFrom.visible)
NewFrom.visible=true;
else
{
NewFrom.show();
NewFrom.Textbox1.text="就是这样传值!";
}
}

动态传值其实原理都差不多,只不过在子窗口当中加入一个TIMER事件处理器,每200毫秒处理一下结果.
子窗口操作
private System.Windows.Forms.Button Textbox1; //子窗口中的一个本文框
public string GetValue;
在子窗口当中添加一个TIMER1事件.
private void Timer1_Tick(object sender, System.EventArgs e)
{
this.Textbox1.text=this.GetValue;
}

父窗口操作 添加一个BUTTON3
private void button3_Click(object sender, System.EventArgs e)
{
NewFrom.GetValue=DateTime.Now().toString();
}
这样就可以实现一个动态传值.
窗口之间的操作有很多的方法,主要是看自己的程序是如何运行,需不需要用到这么复杂的功能.如果真的需要用到这么复杂那么就得利用API函数杀死一个程序或一个程序片.
我姓区不姓区 2008-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Guyschaos 的回复:]
你真的很高手!我很佩服!
[/Quote]
.........
业余程序员 2008-06-30
  • 打赏
  • 举报
回复
这种方法是有一个问题,我在二楼当中已经说了这个问题.其实解决这个问题主要是根据你的程序来解决.如果你的窗口是想在关闭的时候处理一些事项其实可以加上一些事件处理.通过TIMER的控件来进行操作.
还有就是在关闭的时候其实不要使用关闭,而是使用VISIBLE=FALSE
如下面的用法.
MainFrom - 父窗口 Button1 - 打开子窗口 Button2 - 关闭子窗口
SingleFrom - 子窗口

以下方法就可以解决这个问题.

MainFrom 中的代码
------------------------------
using ****
namespace DOWNMail
{
public class MainFrom : System.Windows.Forms.From
{
private System.Windows.Forms.Button button1; //打开子窗口
private System.Windows.Forms.Button button2; //关闭子窗口
SingleFrom NewFrom =new SingleFrom(); //在全局定义当中就把这个事件先定义出来.

private void button1_Click(object sender, System.EventArgs e)
{
if(!NewFrom.visible)
NewFrom.visible=true;
else
NewFrom.show();
}

private void button2_Click(object sender, System.EventArgs e)
{
NewFrom.visible=false;
}
}
}

如果你在子窗口当中有什么方法不能解决请告诉我我会帮你进行解决这些问题.我看了一下其它的关于这方面的问题我发现主要是解决传值问题和刷新父窗口的问题.
业余程序员 2008-06-30
  • 打赏
  • 举报
回复
这个方法有一个小问题就是当关闭之后再点打开就会有问题.当然解决这个问题我想就不用再写代码了.我想大家应该知道如何解这个问题了.
贫僧又回来了 2008-06-30
  • 打赏
  • 举报
回复
你真的很高手!我很佩服!
zhangpt520 2008-06-30
  • 打赏
  • 举报
回复
不知道通过父窗体的MdiChildren 属性找到子窗体将其关闭行不行
xminsong 2008-06-30
  • 打赏
  • 举报
回复
lz不要误导人。
brz97 2008-06-30
  • 打赏
  • 举报
回复
全局对象再次调用会出问题,不知道楼主试没试过

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧