WinForm在主窗体中嵌入子窗体

WinForm应用一般由多个窗体组成,如果每次都弹出窗体显得不是很优雅,而在主窗体中嵌入子窗体就显得优雅许多,在学习的过程中看到了一种复用性较高的代码,可以作为主窗体嵌入子窗体的标准流程,特此记录。

实现上述功能首先要写一个通用的窗体关闭方法,通过foreach遍历容器中是否已经存在其它窗体,如果有的话就先关闭。

private void CloseForm()
        {
            //判断容器中是否已经存在窗体  
            //将this.spContainer.Panel2.Controls改成自己的
            foreach (Control item in this.spContainer.Panel2.Controls)
            {
                if (item is Form)
                {
                    Form objControl = (Form)item;
                    objControl.Close();
                }
            }
        }

其次设置窗体对象的相应属性,其中objForm.Parent 要设置成自己的容器名,最后调用Show()方法。

private void OpenForm(Form objForm)
        {
            CloseForm();
            objForm.TopLevel = false;
            objForm.FormBorderStyle = FormBorderStyle.None;
            objForm.Parent = this.spContainer.Panel2;
            objForm.Dock = DockStyle.Fill;
            objForm.Show();
        }

嵌入新的子窗体时只需要在对应的事件中new一个窗体对象并调用OpenForm()方法传入窗体对象即可。

//显示添加新学员窗体       
        private void tsmiAddStudent_Click(object sender, EventArgs e)
        {
            FrmAddStudent frmAddStudent = new FrmAddStudent();
            OpenForm(frmAddStudent);

        }
© 版权声明
THE END
喜欢就支持一下吧
点赞53赞赏 分享
评论 共1条
匿名的头像 - 登山亦有道
提交
匿名的头像 - 登山亦有道

昵称

在 WordPress 上使用 Sticker Heo 增添互动时的乐趣吧 !

取消
昵称表情代码图片
    • 鸟叔的头像 - 登山亦有道
      鸟叔 Windows Chrome 100.0.4896.60