请教一下,怎么将一个Form嵌入到另一个Form中 比较急……分不够可以再给……公司的一个项目,需要用.net完成一个编辑器,要求如下:类似VS2005的解决方案资源管理器、类视图、资源视图那样,既可以拖出来作为单独的窗口,也可以分别嵌到VS2005的上下左右,并与其他视图组合。这个该怎么做呢?最起码的,就要它固定嵌到父窗口的左侧,同时也可以拖出来成为一个单独的Form,那又该怎么办呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用面板是否可行??没做过WINFORM,不太清楚哦 把Form的TopLeve设置为False或者把Form的边设置为None都可以把它嵌入另一个容器中. 比如如下的两个方法都可以做到:Form f = new Form();f.TopLevel = false;f.Visible = true;this.Controls.Add(f);-------------Form f = new Form();f.FormBorderStyle = FormBorderStyle.None;f.Visible = true;this.Controls.Add(f); 多谢hbxtlhx(平民百姓),我去试试。我用的是CLI,还不完全是C#,公司没有专职。net程序员,我算是被赶鸭子上架,才学了两天…… T_T另外想问一下:您说的TopLevel是否是指TopMost?然后Form的边是否是指FormBoarderStyle?我是这么写的: this->WindowState = FormWindowState::Maximized; this->Form_Operator = gcnew Operators(); this->Form_Operator->Owner = this; this->Form_Operator->Parent = this; // ERROR!!!!! this->Form_Operator->Show();这里This是主窗口,Operators是工具窗口,我想把这个工具窗口嵌入主窗口中,然后就会在Parent那一句报错,说是顶级窗口不能嵌入到另一个顶级窗口中。 用这个控件http://sourceforge.net/projects/dockpanelsuite/ http://sourceforge.net/dbimage.php?id=53439 呵呵多谢zhengshaodong,我去看看。另hbxtlhx(平民百姓):多谢你,公司网速慢我提交完回复才看见您的回复。现在已经解决了,但是还是有个问题:现在能把窗口嵌入进去了。那该如何把窗口再拖出来作为一个从属于父窗口的浮动窗口呢(就像能把“解决方案资源管理器”拖出来作为浮动窗口一样)? developer express 控件,不过不是免费的 刚看了看zhengshaodong给出的连接,很不错,谢谢。还有别的方案么? 做成MDI窗体不知道是否可行阿! 那该如何把窗口再拖出来作为一个从属于父窗口的浮动窗口呢(就像能把“解决方案资源管理器”拖出来作为浮动窗口一样-------------------------------------------一定是选从Controls中,先Remove掉,然后把TopLevel再设置为True了.但问题的难点在于你是怎么把它给"拉"出来的,你可以通过ControlPaint来画一个窗体的在桌上的"框"表示可以被拉出这个窗口,然后在鼠标键UP的时候再设置这个窗口从Controls中出来,再设置它的TopLevel属性. 比如,我有如下的代码来实现我的说法:Form f = new Form();private void button1_Click(object sender, EventArgs e){ f.TopLevel = false; f.Visible = true; this.Controls.Add(f);}private void button2_Click(object sender, EventArgs e){ this.Controls.Remove(f); f.TopLevel = true;} 嗯,多谢hbxtlhx(平民百姓),我去试一试,如果有不会再另发新帖。一会儿就结贴,谢谢众位高手详细的回答 ^_^对给分不满意的,可站内信联系。 C#如何实现选中控件出现虚线框 讨论:VS2005和VS2008的区别以及各自优点,100分 webbrowser程序每次关闭都提示 内存错误 怎么办? 简单送分题:先到先得啦! 串口编程(扫描器 symbol ls4000p)的问题(50分) C# 中的鼠标事件 关于VS.net 2003 的打包工具 什么叫编译性语言??什么叫解释性语言?? SQL数据库自动刷新 怎么样用“回车”来引发buttom_click事件? 菜鸟发问:一个窗口关闭后怎样同时打开另一个窗口 菜鸟求助:数据结构、架构方面(我也不知道到底算什么)方面的问题
没做过WINFORM,不太清楚哦
或者
把Form的边设置为None都可以把它嵌入另一个容器中.
f.TopLevel = false;
f.Visible = true;
this.Controls.Add(f);
-------------
Form f = new Form();
f.FormBorderStyle = FormBorderStyle.None;
f.Visible = true;
this.Controls.Add(f);
我用的是CLI,还不完全是C#,公司没有专职。net程序员,我算是被赶鸭子上架,才学了两天…… T_T
另外想问一下:
您说的TopLevel是否是指TopMost?然后Form的边是否是指FormBoarderStyle?我是这么写的:
this->WindowState = FormWindowState::Maximized; this->Form_Operator = gcnew Operators();
this->Form_Operator->Owner = this; this->Form_Operator->Parent = this; // ERROR!!!!! this->Form_Operator->Show();这里This是主窗口,Operators是工具窗口,我想把这个工具窗口嵌入主窗口中,然后就会在Parent那一句报错,说是顶级窗口不能嵌入到另一个顶级窗口中。
http://sourceforge.net/projects/dockpanelsuite/
现在已经解决了,但是还是有个问题:现在能把窗口嵌入进去了。那该如何把窗口再拖出来作为一个从属于父窗口的浮动窗口呢(就像能把“解决方案资源管理器”拖出来作为浮动窗口一样)?
一定是选从Controls中,先Remove掉,然后把TopLevel再设置为True了.
但问题的难点在于你是怎么把它给"拉"出来的,你可以通过ControlPaint来画一个窗体的在桌上的"框"表示可以被拉出这个窗口,然后在鼠标键UP的时候再设置这个窗口从Controls中出来,再设置它的TopLevel属性.
private void button1_Click(object sender, EventArgs e)
{
f.TopLevel = false;
f.Visible = true;
this.Controls.Add(f);
}private void button2_Click(object sender, EventArgs e)
{
this.Controls.Remove(f);
f.TopLevel = true;
}
我去试一试,如果有不会再另发新帖。
一会儿就结贴,谢谢众位高手详细的回答 ^_^对给分不满意的,可站内信联系。