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

 在我的《MDI窗体相互调用一》文章中已经说明白了如何让MDI窗口之间相互调用了。
但是在上篇文章中使用的方法是用到了”引用类型“的基本特性,下面这种方法,我用类的定义来完成上述功能。一般来说,我不赞成大家使用我的第二种方法,这里写道的第二中方法只是和大家一起探讨!
我的第二种方法是(假设主窗口为Form1,子窗口为Form2)
在主窗体中什么都不需要变化
仍然使用如下代码实现子窗体显示时,主窗体隐藏:

Form2 form2=new Form2( this); //大家会觉得好奇,怎么你这里还带有一个参数
form2.Show();
this.Hide();
而且在主窗体的其他地方,代码根本不需要任何改变,第二种方法,我们完全是在子窗体中改写代码。

在子窗体中的代码如下:
首先我们需要改变一下Form2的构造函数了,因为在Form1中出现了Form2 form2=new Form2( this);这样一句。

    public partial class Form2 : Form
    {
        private Form1 F1 = null;   //这里定义一个Form!的引用
        public Form2( Form1 parentform) //这个参数是我自己加的
        {
            F1 = parentform;        //其实这里才是关键,我将Form1类型的类parentform传递个F1
            InitializeComponent();
        }

        //其他代码
      }
这里我将F1定义为一个私有成员,主要是为了控制F1的作用域,安全第一嘛。
还有在主窗体中,我使用 this作为一个行参传递给 public Form2(Form1 pearentform),因为在主窗体中this所指的就是Form1本身!
以上方法我全部在VS 2005.NET中试验过的,其实方法一和方法二都是一样的,都是借助了”引用类型“的特性,只是实现手段上有那么一点点不同,其实方法一还要比方法二简单。

那 为什么我还要使用方法二呢?这里我感觉学习C#.NET一个要学习的是C#.NET的运行机制,还有最重要的就是他的keypoint。其实学习任何一门编程语言最重要的就是要搞清除他的运行机制和他的keypoint。还有就是多动手,多动脑!

你可能感兴趣的:(class,.net,编程,null,语言)