| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1394 人关注过本帖
标题:[求助]MDI窗体问题
只看楼主 加入收藏
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
[bo][un]sun_life[/un] 在 2008-10-23 09:32 的发言:[/bo]

你能给解释一下你代码的意思吗?我看不懂!


我来解释下吧,我喜欢做这种事~不过4楼的兄弟确实太牛了,他的代码我研究了半个小时,才搞懂,下次记得自己要注释哈~免得我没把你的精华讲述出来浪费了。
程序代码:

using System;
using System.Collections.Generic;
using  System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication19
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Form2 fomr2;
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            fomr2 = new Form2();
            fomr2.MdiParent = this;
            fomr2.OnShowMdiHandler += new Form2.ShowMDIForm2Handler(fomr2_OnShowMdiHandler);//把1这个事件处理函数,通过委托加入事件OnShowMdiHandler以后只要调用此事件就可以执行为form3指定父窗体之操作
            fomr2.Show();
        }

        void fomr2_OnShowMdiHandler(object sender)   //form2的事件处理函数。        
        {                                            //因为标记三的原因,程序进入这里,至此,form3终于成了form1的子窗体。。。好累。。。            Form3 form3 = (Form3)sender;
            form3.MdiParent = this;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
using System;
using System.Collections.Generic;
using  System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication19
{
    public partial class Form2 : Form
    {
        public delegate void ShowMDIForm2Handler(object sender);
        public event ShowMDIForm2Handler OnShowMdiHandler;

        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form3 form3 = new Form3();
            form3.OnShowMDIForm3Handler += new Form3.ShowMDIForm3Handler(form3_OnShowMDIForm3Handler); //此句标记为一            form3.show();  //关键滴位置 F11,冲了。        
         }

        void form3_OnShowMDIForm3Handler(object sender)
        {
            OnShowMdiHandler(sender);   //因为二,程序运行到这里,触发了此事件,标记为三,跳转至执行此事件的代码fomr2_OnShowMdiHandler()        }
    }
}

using System;
using System.Collections.Generic;
using  System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication19
{

    public partial class Form3 : Form
    {
        public delegate void ShowMDIForm3Handler(object sender);
        public event ShowMDIForm3Handler OnShowMDIForm3Handler;
        public Form3()
        {
            InitializeComponent();
        }

        public void show()
        {
            OnShowMDIForm3Handler(this);  //把当前窗体form3对象传入事件OnShowMDIForm3Handler()因为一,因为一,所以程序去执行form3_OnShowMDIForm3Handler()这里标记为二,前往form3_OnShowMDIForm3Handler的代码            this.Show();
        }

        private void Form3_Load(object sender, EventArgs e)
        {

        }
    }
}

我头有点昏。。。你可曾听懂?


仁者乐膳,智者乐睡。我都爱~
2008-10-23 21:47
maibarry
Rank: 1
等 级:新手上路
帖 子:54
专家分:7
注 册:2008-10-21
收藏
得分:0 
学习
2008-10-24 14:06
wencan83
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-10-24
收藏
得分:0 
Form3 form3=new Form3();
form3.MdiParent=form1.MdiParent;
看这样行不,就是把from3设为form1的子窗体
2008-10-24 22:28
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
回复 13# wencan83 的帖子
这样不行,你的第二句话就有问题。首先form2中不能写form1对象,另外form1是父窗体,怎么能用到父窗体的父窗体呢
简单点的话,可以form2.MdiParent = this.MdiParent  //在form2中


仁者乐膳,智者乐睡。我都爱~
2008-10-24 22:32
快速回复:[求助]MDI窗体问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017784 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved