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();
}
比如,你在
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();
}
}
}
其他的界面也是类似的用法。
简单,实用。