winfrom Mdi模式,子窗体的Parent设置为父窗体中的一个Panel控件后,子窗体无法随父窗体改变大小

huguojunsy 2019-01-04 04:52:40
父窗体中,设置一个panel,并将其Dock=Fill,然后将子窗体的Parent设置为该panel。
下面是创建子窗体代码:


Form childForm = new Form();

childForm.TopLevel = false;

childForm.Dock = DockStyle.Fill;
childForm.WindowState = FormWindowState.Maximized;

childForm.MdiParent = this;
childForm.Parent = this.panel;
childForm.Show();


问题:如果在父窗体没有最大化的时候,先把子窗体最大化,之后再把父窗体最大化,这个时候,子窗体的大小仍然没有改变。

如果子窗体的Parent设置为父窗体本身,那么,子窗体在最大化之后,他的大小会自动随父窗体大小改变。

有没有办法在用panel方式的时候,让子窗体也跟随父窗体大小自动改变?
...全文
624 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Francis9070 2019-07-02
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
看着你很执着的样子,我不经要问一下:你究竟想要达到什么效果呢?
MDI 本来是个承载子窗体的容器,而你把子窗体放入 Panel 中,又和 MDI 有什么关系呢?难道仅仅是你的任性?



我也遇到了与楼主相同的问题,意思是 在子窗体最大化的时候让panel在父窗体中也最大化!MDI容器可以承载多个子窗体啊,把子窗体放入 Panel 中的目的是为了让各个子窗体互不遮挡,这么简单的描述看不懂吗???
xuzuning 2019-01-08
  • 打赏
  • 举报
回复
看着你很执着的样子,我不经要问一下:你究竟想要达到什么效果呢?
MDI 本来是个承载子窗体的容器,而你把子窗体放入 Panel 中,又和 MDI 有什么关系呢?难道仅仅是你的任性?
huguojunsy 2019-01-08
  • 打赏
  • 举报
回复
引用 4 楼 ilikeff8 的回复:
        public Form1()
        {
            InitializeComponent();

            this.IsMdiContainer = true;

            Panel panel = new Panel
            {
                Parent = this,
                Dock=DockStyle.Fill,
                Size=this.ClientSize,
                BackColor=Color.Red
            };

            this.Shown += (sender, e) =>
              {
                  Form childForm = new Form();
                  childForm.MdiParent = this;
                  childForm.Parent = panel;

                  childForm.TopLevel = false;

                  childForm.AutoSize = true;
                  childForm.Dock = DockStyle.Fill;


                  childForm.Show();

              };
        }
这个没有解决问题哦。
huguojunsy 2019-01-08
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
可以在panel的大小改变事件里动态设置吧
是的,目前是用的这个方法。感觉有点怪,不过视觉上感觉不到。
ilikeff8 2019-01-08
  • 打赏
  • 举报
回复
        public Form1()
{
InitializeComponent();

this.IsMdiContainer = true;

Panel panel = new Panel
{
Parent = this,
Dock=DockStyle.Fill,
Size=this.ClientSize,
BackColor=Color.Red
};

this.Shown += (sender, e) =>
{
Form childForm = new Form();
childForm.MdiParent = this;
childForm.Parent = panel;

childForm.TopLevel = false;

childForm.AutoSize = true;
childForm.Dock = DockStyle.Fill;


childForm.Show();

};
}
desperaso 2019-01-06
  • 打赏
  • 举报
回复
父窗体Resize

private void Form1_Resize(object sender, EventArgs e)
{
改变panel大小...................
}
stherix 2019-01-04
  • 打赏
  • 举报
回复
可以在panel的大小改变事件里动态设置吧

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧