首页 新闻 会员 周边

C#程序中 我前面的程序已经弹出了一个窗体,如何才能获得这个窗体,并把它嵌入到容器中?

0
悬赏园豆:50 [待解决问题]

我自己的一个子工程在program中弹出了一个窗体,用的是show的方法,集成到总工程里,可以将我的子工程窗体弹出来显示,但是不能把我的窗体嵌入到总工程的界面中,错误是我子工程的一个雷没有实例化,所以我希望的解决方法是:

一种是:在总工程里先获得子工程弹出的窗体,然后将这个窗体嵌入到我总工程的界面中。

另一种是:希望高手教我,在子工程里将子界面嵌入主界面的方法,我用的是:在program类中先实例化一个类,在实例化的类里面实例化我的主窗体,然后再program类中的mian()方法中显示主窗体。

c#
龙泽清的主页 龙泽清 | 初学一级 | 园豆:172
提问于:2014-06-25 16:05
< >
分享
所有回答(5)
0

在什么地方new都可以,只要你new了,应该就没问题了

刘宏玺 | 园豆:14020 (专家六级) | 2014-06-25 16:10
0

你要嵌入的话就不能建窗体了,把你的子窗体建一个一控件,然后在主窗体的容器中.Controls.add(new childControl()),类似这种方式!

Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-06-25 16:13
0

你首先得理解窗体、主窗体、子窗体、MDI 窗体的概念。一个进程只有一个主窗体,把它设置为 MDI 窗体,然后你就可以创建子窗体,让子窗体的 parent 对象等于该 MDI 主窗体。

 

public ChildWindow : Form {}

public MainWindow : Form

{

      public MainWindow()

      {

           this.IsMdiContainer = true;

       }

    

      void ShowChildWindow()

     {

             ChildWindow cw = new ChildWindow;

              cw.MdiParent = this;

              cw.Show();

      }
}

 

static class Program

{

    static void Main()

    {

         Application.Run(new MainWindow());

    }
}

Launcher | 园豆:45045 (高人七级) | 2014-06-25 16:19

如果我在主窗体中有一个panel1,我在主窗体下面写了一个添加子窗体的函数addchildform()函数,要是在主窗体下,调用 addchildform(),嵌入子窗体是没有问题的,但是我要是想在Form2窗口下面,将Form2嵌入主窗体的panel1时,我该怎么写?要是我要嵌入Form3窗口,我要怎么写?(主窗体上面没有子窗体Form2、Form3、、、的触发事件)。

支持(0) 反对(0) 龙泽清 | 园豆:172 (初学一级) | 2014-06-25 16:37

@龙泽清: 注意这句代码:cw.MdiParent = this; 它需要 MDI 窗体的实例,因此不管你想从哪儿来添加子窗体,你只要有该 MDI 窗体的实例即可。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-06-25 16:44
0

建议采用UserControl

幻天芒 | 园豆:37175 (高人七级) | 2014-06-25 16:32

能不能稍微说的详细一点···这个我没有用过

支持(0) 反对(0) 龙泽清 | 园豆:172 (初学一级) | 2014-06-26 13:47

@龙泽清: 就是把FrmStart:Form,换成继承自UserControl就行了。后面就可以用Contrls.Add(frmStart)添加了。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-06-26 14:03
0

查查用户自定义控件就行了。把你要的窗体做成你自己的控件。

路还很长........继续走 | 园豆:178 (初学一级) | 2014-07-01 17:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册