Wince的界面切换体系——用户控件的合理使用

来源:互联网 发布:这是我的战争 知乎 编辑:程序博客网 时间:2024/05/22 11:38

wince是上一个使用的语言,现在已经很少使用了。

这里主要分享一种Wince中winfrom使用用户控件来切换界面的体系。

这个很对于使用wince的用户来说,是很实用的!

为什么使用用户控件来切换界面

对于Wince来说,这是一种移动终端系统,使用的开发语言是C#,而移动终端上,通常内存和存储空间都较小。不适合每次新开一个界面,都new From()。
针对这种情况,想到了用用户控件的变更来实现界面间的切换。具体怎么实现呢?
1、创建用户控件(User control);
2、在默认创建的From上,声明这个用户控件;
3、在Form上布置一个panel容器,用于存放用户控件;
4、当你点击按钮触发的时候,用一个新的用户控件替换panel上的原有的用户控件。

如何使用用户控件切换界面

我们列出对应代码:
控件的声明:
 <span style="white-space:pre"></span>public static MainForm userform = null;//工程默认创建的From        public UsMenu UsMenu_page = null;     //自定义的菜单用户控件        public UsZhizuoMenu UsZhizuoMenu_page = null;//以下都是用户控件        public UsFuzhuangZhizuo UsFuzhuangZhizuo_page = null;        public UsFuzhuangQuery UsFuzhuangQuery_page = null;        public UsGongxuYijiao UsGongxuYijiao_page = null;        public UsSet UsSet_page = null;
枚举的定义:用于定位你现在处于哪个界面
public enum PageState        {            /// <summary>            /// 主菜单界面            /// </summary>            Index,            /// <summary>            /// 制作菜单            /// </summary>            zhizuomenu,            /// <summary>            /// 制作            /// </summary>            zhizuo,            /// <summary>            /// 查询            /// </summary>            query,            /// <summary>            /// 工序移交            /// </summary>            gongxu,            /// <summary>            /// 服务设置            /// </summary>            set        }
MainFrom界面上定义的用户控件的切换:
 //主菜单界面        public void openUsMenuForm()        {            if (UsMenu_page == null)            UsMenu_page = new UsMenu();            userform.Text = "主菜单界面";            pnl.Controls.Clear();            pnl.Controls.Add(UsMenu_page);            pnl.Tag = PageState.Index;            pnl.Focus();            UsMenu_page.pictureBox1.Focus();        }        //服务界面        public void openUsSetForm()        {                           UsSet_page = new UsSet();            userform.Text = "设置界面";            pnl.Controls.Clear();            pnl.Controls.Add(UsSet_page);            pnl.Tag = PageState.set;            pnl.Focus();            UsSet_page.txtIP.Focus();        }
初始化panel上的用户控件:
 public MainForm()        {            InitializeComponent();            userform = this;            m_scan.OnDecodeEvent += new DecodeEventHandler(scan_OnDecodeEvent);            openUsMenuForm();                   }


通过以上的代码,你其实应该很清晰看出这个体系的脉络。就是通过panel上的用户控件的变换,来实现你想要的界面变换。
比如,你在
UsMenu <span style="font-family: Arial, Helvetica, sans-serif;">UsMenu_page </span>
这个菜单用户控件上,有几个按钮,分别触发不同的界面,如下:
using System;using System.Linq;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Data;using System.Text;using System.Windows.Forms;namespace SmartDeviceConnectSql2005{    public partial class UsMenu : UserControl    {        public UsMenu()        {            InitializeComponent();                   }               private void pictureBox1_Click(object sender, EventArgs e)        {            MainForm.userform.openUsZhizuoMenuForm();        }        private void pictureBox2_Click(object sender, EventArgs e)        {            MainForm.userform.openUsGongxuYijiaoForm();        }        private void pictureBox3_Click(object sender, EventArgs e)        {            MainForm.userform.openUsSetForm();        }    }}
这里做的都是界面的跳转。
其他的界面也是类似的用法。

简单,实用。



2 0
原创粉丝点击