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

时间:2023-01-19 01:01:15

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();
}
}
}
这里做的都是界面的跳转。
其他的界面也是类似的用法。

简单,实用。