吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 635|回复: 6
收起左侧

[资源求助] C#中窗体不能在容器中正常显示的问题

[复制链接]
lbl283743758 发表于 2022-1-22 10:25
25吾爱币
本帖最后由 lbl283743758 于 2022-1-22 15:54 编辑

背景介绍:主窗体FrmMain用SplitContainer(name:spConcainer)分成spConcainer.Panel1和spConcainer.Panel2两个容器;
想把子窗体FrmAddStudent 通过“添加学员按钮(name:btnAddStudent)”按钮 控制显示在主窗体FrmMain的右边部分pConcainer.Panel2容器中;
“添加学员”按钮(name:btnAddStudent)布置在主窗体FrmMain的左侧,代码如下:
        private void btnAddStudent_Click(object sender, EventArgs e)
        {
            //首先判断当前容器中是否已经存在窗体
            foreach (Control item in this.spContainer.Panel2.Controls)
            {
                if (item is Form)
                {
                    Form objControl =(Form)item;
                    objControl.Close();
                }
            }
            
            FrmAddStudent objFrm = new FrmAddStudent();
            objFrm.TopLevel = false;//将子窗体设置成非顶级控件
            objFrm.WindowState = FormWindowState.Maximized;//让子窗体最大化显示
            objFrm.FormBorderStyle = FormBorderStyle.None;//去掉窗体的边框
            objFrm.Parent = this.spContainer.Panel2;//指定子窗体显示的容器
            objFrm.Show();
        }
问题:
点“添加学员”按钮(name:btnAddStudent)后,子窗体FrmAddStudent 不能正常显示在主窗体的右侧spConcainer.Panel2容器中,见下图。请问这是啥原因造成的,该如何处理?

原因已找到:
spConcainer.Panel2的属性的字体被我不小心设定成特别大的了。改为常规大小就可以了。

这是异常状态的图片

这是异常状态的图片

这是子窗体正常的外观图

这是子窗体正常的外观图

子窗体最大化去掉后,显示成这样。也不正常

子窗体最大化去掉后,显示成这样。也不正常

最佳答案

查看完整内容

这不就是某课堂的一个案例吗??

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

莫名堂 发表于 2022-1-22 10:25
这不就是某课堂的一个案例吗??
莫名堂 发表于 2022-1-22 12:38
this.spContainer.Panel2右边的控件上新拖入一个panel控件

            Form2 objFrm = new Form2();
            objFrm.TopLevel = false;//将子窗体设置成非顶级控件

            objFrm.FormBorderStyle = FormBorderStyle.None;//去掉窗体的边框
            objFrm.Dock = DockStyle.Fill;
            objFrm.Parent = this.panel1;//指定子窗体显示的容器
            objFrm.Show();
 楼主| lbl283743758 发表于 2022-1-22 13:06
莫名堂 发表于 2022-1-22 12:38
this.spContainer.Panel2右边的控件上新拖入一个panel控件

            Form2 objFrm = new Form2();

就是那个课程的案例,我照着做就做不出同样的效果啊!也没找到什么地方有不同。请问你这段代码是在显示不正常的那上边再用一pannel做容器是吧?
 楼主| lbl283743758 发表于 2022-1-22 13:33
莫名堂 发表于 2022-1-22 12:38
this.spContainer.Panel2右边的控件上新拖入一个panel控件

            Form2 objFrm = new Form2();

显示到新拖放的panel1中还是一样的效果。是不是子窗体某个地方没设置好a ?
莫名堂 发表于 2022-1-22 13:35
objFrm.WindowState = FormWindowState.Maximized;//让子窗体最大化显示这句话去掉
 楼主| lbl283743758 发表于 2022-1-22 13:51
莫名堂 发表于 2022-1-22 13:35
objFrm.WindowState = FormWindowState.Maximized;//让子窗体最大化显示这句话去掉

这句话去掉显示也不正常。请看原帖中增加的图片。
快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-27 04:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表