using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.uc1 = new UserControl1();
            this.uc1.Dock = DockStyle.Fill;
        }
        UserControl1 uc1;//右菜单项1
        private void 载入第一次ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.splitContainer1.Panel1.Controls.Clear();
            this.splitContainer1.Panel1.Controls.Add(this.uc1);
            //
        }
//右菜单项2
        private void 载入第二次ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.splitContainer1.Panel2.Controls.Clear();
            this.splitContainer1.Panel2.Controls.Add(this.uc1);                    }
    }
}
//----
大家认为按这两个菜单项会有什么效果为什么?

解决方案 »

  1.   

    就是根据需要加载用户控件实际效果很类似mdi窗口,应该算是变体的mdi窗体,不过与mdi不同的是只能显示一个窗体呵呵,我还见过另外一种实现   容器窗体.panel1=要包含窗体.panel1
       要包含的窗体.show();
      

  2.   

    大家说了这么,我想问的问题是,一个实例被多次引用后的情况A a1,a2,a3;
    a1=new A(3);
    a2=a1;
    a3=a1;a1,a2,a3,都指向同一个实例,在上面的winform例子中出现这种情况时即一个uc1被即加载到
    sp.Panel1.Controls.Add(uc1);
    sp.Panel2.Controls.Add(uc1);但它们都指向同一个uc1,这时如果点击相关菜单项欲在不同的Panel上显示uc1时
    那么只能有一个uc1会被显示出来,而另一个Panel.Controls[0]虽然也引用了uc1的实例
    但是缺无法同时显示出来,我想这是因为如果同时显示出来那么同一个实例就可能因为
    接受不同的输入而变得同部状态或属性不一致,MS为了保护这种情况的发生于是就施加了
    这种自动保护,即只能显示当前的那个Panel.Controls[0]中的uc1来..另一个Panel.Controls[0]中的实例并没有被移除而只是因为受保护而不能被显示出来,
    不知我的这个推论,大家是否认同!