解决方案 »

  1.   

    一般情况下,都是在主窗体不关闭的情况下,用 ShowDialog 打开子窗体的,这样形成一连串的窗体,但只有最后打开的窗体显示着,子窗体关闭重新显示打开它的窗体。
      

  2.   

    比如说你在 form1 窗体中某个事件处理方法里写private xxxxxxx(object sender, EventArgs e)
    {
        Form2 form2= new Form2();
        form2.Show();
    }
    这时候form2自然就占满整个画面了。然后等form2执行了close,mobile系统就会回到之前的form1的画面上,而且状态仍然保持,因为form1根本没有丢失嘛。
      

  3.   

    最后提醒你一下,在mobile跟桌面是不同的。不存在什么“弹出窗口”,窗口之间也不会交错重叠。不要把mobile当作desktop。
      

  4.   


    当然可以。这些都是无需纠结的。微软的开发工具支持比较一贯的用户体验和开发方法,你可以自己实验。只是你要知道 .net framework compact跟 .net framework不是一回事,mobile跟desk不是一回事。
      

  5.   

    http://bbs.csdn.net/topics/360140208顺便说下,你最后提到的Panel,适合实现那种向导界面(即包含上一步、下一步的分步界面)
      

  6.   

    多谢各位指点。纠结的原因是怕窗体打开过多,会造成内存占用。说白了,还是没接触过windows开发,不太懂。另外还有个问题:
    项目概要:
    1 基于windows mobile 6.5的C#
    2 窗体有固定的title区域,body区域,foot区域。现在设计成三个区域,用三个panel,只公开body区域的panel
    这样子窗体只需实装bodyPanel即可。这样可以使画面layout统一。问题是,在panel上面出发某个事件,需要窗体迁移时,如何关闭子窗体。比如:login窗体,输入8位后,自动login。form代码:
     public class LoginForm : BaseForm{
         public LoginForm(){
             InitializeComponent();
             this.bodyPanel.Controls.Add(loginPnl);
         }
    }loginPanel代码:
     public partial class LoginPnl : UserControl
        {
            public LoginPnl()
            {
                InitializeComponent();
            }        private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (emsCd.Text.Length == 8)
                {
                    doLogin();
                }
            }private void doLogin()}
    if (true){//登录判断
      Form2 form2=new Form2();
      form2.ShowDialog();
      
      //关闭login窗体
      ((LoginView)this.Parent.Parent.Parent).Close();
    }}