我自己的一个子工程在program中弹出了一个窗体,用的是show的方法,集成到总工程里,可以将我的子工程窗体弹出来显示,但是不能把我的窗体嵌入到总工程的界面中,错误是我子工程的一个雷没有实例化,所以我希望的解决方法是:
一种是:在总工程里先获得子工程弹出的窗体,然后将这个窗体嵌入到我总工程的界面中。
另一种是:希望高手教我,在子工程里将子界面嵌入主界面的方法,我用的是:在program类中先实例化一个类,在实例化的类里面实例化我的主窗体,然后再program类中的mian()方法中显示主窗体。
在什么地方new都可以,只要你new了,应该就没问题了
你要嵌入的话就不能建窗体了,把你的子窗体建一个一控件,然后在主窗体的容器中.Controls.add(new childControl()),类似这种方式!
你首先得理解窗体、主窗体、子窗体、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());
}
}
如果我在主窗体中有一个panel1,我在主窗体下面写了一个添加子窗体的函数addchildform()函数,要是在主窗体下,调用 addchildform(),嵌入子窗体是没有问题的,但是我要是想在Form2窗口下面,将Form2嵌入主窗体的panel1时,我该怎么写?要是我要嵌入Form3窗口,我要怎么写?(主窗体上面没有子窗体Form2、Form3、、、的触发事件)。
@龙泽清: 注意这句代码:cw.MdiParent = this; 它需要 MDI 窗体的实例,因此不管你想从哪儿来添加子窗体,你只要有该 MDI 窗体的实例即可。
建议采用UserControl
能不能稍微说的详细一点···这个我没有用过
@龙泽清: 就是把FrmStart:Form,换成继承自UserControl就行了。后面就可以用Contrls.Add(frmStart)添加了。
查查用户自定义控件就行了。把你要的窗体做成你自己的控件。