您的位置:首页 > 编程语言 > C#

C#.NET学习笔记--MDI窗体相互调用一

2009-01-09 09:37 316 查看
某些情况下,我们不只是单一的从主窗口调用子窗口,在现在我们所能使用到的,所能看到的软件里面,很多软件都引入了从子窗口调用主窗口的例子。这里就不一一列举了啊!
从主窗口调用子窗口相信很多人都会做了!基本代码如下:
Form2 form2=new Form2(); //其中Form2是子窗口
form2.Show();

假如我们现在要执行一个在调用子窗口的同时隐藏主窗口,当子窗口关闭时显示隐藏了的主窗口,当然这个在主窗口的代码很好实现,代码如下:
Form2 form2=new Form2(); //其中Form2是子窗口
form2.Show();
this.hide();
以上三句代码就实现了在调用子窗口的同时,隐藏掉了我们的主窗口了!

(因为我自己学习C#到现在不超过一星期,所以我刚开始想这个问题的时候,出现错误了)下面是我最初的错误想法:
我最开始是这么想的:使用new来显示我的主窗口,当然这个是错误的,因为new方法会在新的内存区建立一个和最初建立的主窗体一摸一样的窗体,而new的这个窗体已经不是我们需要的最初的窗体了!
其实很简单,当你使用new方法以后,你编译你的代码,你的程序是不会终止的。(别笑我哈,我也才接触C#不长!)

开始我百思不得其解,但是我想想类不是属于引用类型的吗,为什么我不建立和主窗体的一个引用呢?我就顺着这样的思路走下去。果然成功了。
首先,我在主窗体的的代码中添加这样一行代码:
public partial class Form1 : Form
{
static public Form1 F1 = null; //就是这行代码才重要

public Form1()
{
InitializeComponent();
F1 = this; //这里一定要对F1进行赋值
}

//其他代码
}
然后在子窗体中,同样要做改变:在子窗体中需要改变的代码如下:
(因为我用的是按钮按下触发事件:子窗体关闭,而原来的主窗体显示出来)
private void close_Click(object sender, EventArgs e)
{
Form1.F1 = Form1(); //这里F1就是一个引用类型 Form1是主窗体
F1.Show();
this.Close();
}

或许还有朋友会问,你怎么知道F1是一个引用?那只有建议兄弟在巩固一下自己的基础知识了。

到现在为止,是不是觉得其实MDI窗口相互调用也不是那么难了啊,其实通过这个例子,我自己收获倒是更加加深了对C#中类的概念以及引用类型的使用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐