当前位置:首页 > 技能相关 > C#与C++ > 正文内容

C# 设置子窗口,并且解决窗体显示问题与多次打开问题

admin2年前 (2023-01-08)C#与C++4060 修订时间:2023-01-08 23:26:17

实例:

本例讲解的是在C#中如何设置主窗口和子窗口,并解决一下奇葩问题,问题如下:

1、每次打开子窗口的位置均会因为有Menistrip而有不同的位移,循环往复;

2、多次打开同子窗口,子窗口对象被多次创建;

3、其它未知,后期补上;

实现方式:

1、主窗口的设置

        private void main_Load(object sender, EventArgs e)
        {
            //设置主窗口为MDI容器
            this.IsMdiContainer = true;
            //设置窗口默认状态
            this.WindowState = FormWindowState.Normal;
            //设置窗口位置状态
            this.TopLevel = true;
            //设置子窗口内容排列方式,当前为居中
            this.StartPosition = FormStartPosition.CenterParent;
        }

2、Menustrip的菜单Click事件

            //实例化子窗口对象
            HostipalInfo HostipalInfofrm = new HostipalInfo();
            //关闭窗口位置状态
            HostipalInfofrm.TopLevel = false;
            //这是一个判断方法,方法内容在下方会提到
            if (!ShowChildrenForm(HostipalInfofrm.Text))
            {
                //设置子窗口对象的主窗口是哪个
                HostipalInfofrm.MdiParent = this;
                /设置窗口默认状态
                HostipalInfofrm.StartPosition = FormStartPosition.Manual;
                //显示子窗口对象
                HostipalInfofrm.Show();
            }
            //设置主窗口的宽度与高度,加值为边框,涵盖内容的实际宽度、高度
            this.Width = HostipalInfofrm.Width + 20;
            this.Height = HostipalInfofrm.Height + 90;

上面用到的方法ShowChildrenForm

        private bool ShowChildrenForm(string p_ChildrenFormText)
        {
            int i;
            //依次检测子窗口,关闭全部打开子窗口
            //this.MdiChildren.Length 用于统计子窗口数量
            for (i = 0; i < this.MdiChildren.Length; i++)
            {
                this.MdiChildren[i].Close();
            }
            //返回false值
            return false;
        }


 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=274

分享给朋友:

相关文章

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。