当前位置:编程学习 > C#/ASP.NET >>

form1有一个panel控件,panel中装的是form2,如何让form2撑满panel呢?

form1有一个panel控件,panel中装的是form2,如何让form2撑满panel呢?

panel控件的 anchor 属性是: Top, Bottom, Left, Right

所以,form1最大化后,panel同步最大化,但是panel中的form2不能同步增大,撑满panel
--------------------编程问答-------------------- 解决了。

            frmsk.WindowState = FormWindowState.Normal;
            frmsk.TopLevel = false;     //必须设置成“非顶级控件”,才能将窗体添加到控件panel中
            frmsk.Dock = System.Windows.Forms.DockStyle.Fill;
            
            frmsk.Parent = panel1;  //也可以用下面的一句 this.panel1.Controls.Add(frmsk);
            //this.panel1.Controls.Add(frmsk);
            frmsk.TopMost = true;
            frmsk.Show();
--------------------编程问答-------------------- 恭喜,解决就接分好了~~ --------------------编程问答-------------------- 事实上,你应该使用 MID 窗口。

参考 http://msdn.microsoft.com/zh-cn/library/xyhh2e7e.aspx --------------------编程问答--------------------
引用 3 楼 caozhy 的回复:
事实上,你应该使用 MID 窗口。

我的目的是让窗体成为主窗体的一部分。这样灵活,mdi比较死。也实现不了将窗体的一部分放上另外一个窗体吧。 --------------------编程问答-------------------- 接分!!! --------------------编程问答--------------------

// form1有一个panel控件,panel中装的是form2
// 汗一个先~~
--------------------编程问答-------------------- 呵呵 恭喜了LZ --------------------编程问答-------------------- 我也是来接分的

 form.SuspendLayout();
            form.TopLevel = false;
            form.FormBorderStyle = FormBorderStyle.None;
            form.Parent = this.pnlMain;
            form.Bounds = new Rectangle(0, 0, this.pnlMain.Width, pnlMain.Height);
            form.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            form.Show();
            form.BringToFront();
            form.ResumeLayout();
--------------------编程问答-------------------- 听说有分拿-_-! --------------------编程问答-------------------- 接分!!!!!! --------------------编程问答--------------------
引用 6 楼 youzelin 的回复:
// form1有一个panel控件,panel中装的是form2
// 汗一个先~~

什么意思,我的做法不可行么? --------------------编程问答-------------------- 哪有 panel 中套 form 的?
我很好奇你的业务逻辑是什么?是什么样的需求使得你不得不在 panel 里面套 form。
form 是顶级控件,top level 的。你把一个 subcontrol 级别的控件当做 form 的爹地,这样做的目的是什么?
而且一大堆的问题就出来了,比如:你怎么在 panel 中移动 form? --------------------编程问答-------------------- 回楼上,
我是将嵌入的窗体作为控件用

比如左边是导航(treeview)
根据不同的节点,右边显示不同的窗体。
如果不是将 窗体 嵌入到 panel 中,这种效果如何实现呢?
--------------------编程问答-------------------- 导航的设为最底层显示
要当前窗体设置为容器窗体
其他窗体的父亲设置为当前窗体
显示子窗体    --------------------编程问答-------------------- 正在学习中........ --------------------编程问答--------------------
引用 14 楼 shagu 的回复:
导航的设为最底层显示
要当前窗体设置为容器窗体
其他窗体的父亲设置为当前窗体
显示子窗体

你这种方式,导航与容器窗体,不能一同显示吧? --------------------编程问答--------------------
引用 12 楼 youzelin 的回复:
哪有 panel 中套 form 的?
我很好奇你的业务逻辑是什么?是什么样的需求使得你不得不在 panel 里面套 form。
form 是顶级控件,top level 的。你把一个 subcontrol 级别的控件当做 form 的爹地,这样做的目的是什么?
而且一大堆的问题就出来了,比如:你怎么在 panel 中移动 form?

panel中套form,我在winform中经常用呀!莫非一直都错了?
一个窗体中,左边是导航,有很多菜单项的那种,针对于每一个菜单项都有一个页面!那么总不能所有的菜单项都使用panel吧!那样的话,文档视图看起来可真够头大的了!而且有的子窗体也会在其他地方用到! --------------------编程问答--------------------
引用 13 楼 fqfqfqfq5 的回复:
回楼上,
我是将嵌入的窗体作为控件用

比如左边是导航(treeview)
根据不同的节点,右边显示不同的窗体。
如果不是将 窗体 嵌入到 panel 中,这种效果如何实现呢?


WinForm 导航为什么不用 MDI?就算不用MDI,也应该用 TabControl + UserControl 啊!
试问,如果我想打开两个 Window 怎么办?两个 Window 我都要各自操作。

总之,就算你实现了,这种做法是不合理的。 --------------------编程问答--------------------
引用 17 楼 wuwo333 的回复:
panel中套form,我在winform中经常用呀!莫非一直都错了?
一个窗体中,左边是导航,有很多菜单项的那种,针对于每一个菜单项都有一个页面!那么总不能所有的菜单项都使用panel吧!那样的话,文档视图看起来可真够头大的了!而且有的子窗体也会在其他地方用到!


我已经不想解释了,你去看看所有的应用程序,只要你用过的。你看过那个应用程序是这样做的?就算有导航栏、菜单,会这样做吗?

你都没有搞清楚 Form、Control、Component、UserControl 之间的关系。 --------------------编程问答--------------------
引用 13 楼 fqfqfqfq5 的回复:
回楼上,
我是将嵌入的窗体作为控件用

比如左边是导航(treeview)
根据不同的节点,右边显示不同的窗体。
如果不是将 窗体 嵌入到 panel 中,这种效果如何实现呢?

干嘛不把你的子窗体做成自定义控件呢 --------------------编程问答-------------------- 这个 

this.form2.Dock = DockStyle.Fill;
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,