时间:2021-05-21
在Windows Form平台下实现窗口跳转,常见的有以下几种方式,比如通过Show/ShowDialog方法显示新的窗口,通过多文档界面(MDI)在父窗口中加载子窗口,或者是通关过在窗口中动态加载自定义控件,比如通过将窗口中的Panel控件作为容器,将一些自定义元素作为视图界面控件,动态加载到Panel控件中。下面我们将简单介绍这几种方式
Show/ShowDialog
通过这两种方法可以很简单的实现窗口跳转,
Home home = new Home();home.Show();Home home = new Home();home.ShowDialog();通过Show方法可以显示非模式窗体,实际是将窗口设置为窗体的顶级对象。显示窗体等效于将Visible属性设置为true。 调用Show方法后,Visible属性返回一个true值,直到调用Hide方法为止。
而ShowDailog方法就是将窗体显示为一个模式对话框。只有将对话框关闭之后才会执行之后的代码。
MDI窗口
这种方式实际上是通过创建一个MDI父窗口容器,然后让各个子窗口显示到父窗口容器中。
首先我们需要将父窗口的IsMdiContainer属性设置为True(确定是否将窗口设置为MDI容器),然后具体的跳转代码如下
从上图中,如果根据平时的一些软件开发需求,我们看到这样的显示是有一些问题的,比如,登录和主菜单页面重叠显示,子页面带有边框等等。
在子窗口的加载事件中,增加窗口边框的处理如下
private void Login_Load(object sender, EventArgs e){ this.FormBorderStyle = FormBorderStyle.None;//将窗口设置无边框模式,即去掉边框和最大化等按钮 this.WindowState = FormWindowState.Maximized;//将子窗口设置为最大化,即在父容器中起到居中的效果}通过单例模式,创建一个全局容器实例,并提供一个公共的子窗口加载方法
static Form_Container instance;public static Form_Container Instance{ get { if (instance == null) { instance = new Form_Container(); } return instance; }}public void LoadChildPage(Form form){ // 每次加载子窗口的时候关闭其他窗口 foreach (var item in instance.MdiChildren) { item.Close(); } form.MdiParent = instance; form.Show();}现在我们可以通过下面的方式进行子页面的切换
Form_Container.Instance.LoadChildPage(new Login());Form_Container.Instance.LoadChildPage(new Home());动态加载子控件
这种方式的实现与MDI的方式类似,我们先创建UC_Loging和UC_Home两个自定义控件作为子页面;然后创建一个容器窗口Form_Container,在Form_Container中放一个Panel控件作为子页面的容器,通过将自定义控件绑定到panel实现页面切换的效果。
public partial class Form_Container : Form{ public Form_Container() { InitializeComponent(); } static Form_Container instance; public static Form_Container Instance { get { if (instance == null) { instance = new Form_Container(); } return instance; } } public Panel PnlContainer { get { return pnlContainer; } set { pnlContainer = value; } } public void LoadChildPage(Control control) { PnlContainer.Controls.Clear(); PnlContainer.Controls.Add(control); } private void Form_Container_Load(object sender, EventArgs e) { Form_Container.Instance.LoadChildPage(new UC_Login()); }}以上就是在Windows Form程序开发过程中常见的页面切换的方式。
到此这篇关于3种方法实现WindowsForm切换窗口的文章就介绍到这了,更多相关WindowsForm切换窗口内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
第一种方法:使用场景:打开多个窗口,需要定位到新打开的窗口使用方法:#获取打开的多个窗口句柄windows=driver.window_handles#切换到当
窗口背景主要包括,背景色与背景图片,设置窗口背景有三种方法使用QSS设置窗口背景使用QPalette设置窗口背景实现PainEvent,使用QPainter绘制
上一篇《javascript实现tab切换的四种方法》中讲了tab切换的4种不同实现原理,那么,现在到理论联系实际的时候了,下面就写几个实例。一、仿”中国人民大
Window对象窗口操作 Window对象对操作浏览器窗口非常有用,开发者可以移动或调整浏览器窗口的大小。可用四种方法实现这些操作: moveBy(dx,d
java实现多线程的三种方法在java中,有三种方法可以实现多线程。第一种方法:继承Thread类,重写run函数。第二种方法:实现Runnable接口,重写r