我的回收站

技术文章、随笔、文摘及其它
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
接上文: 列车时刻表 开发回顾 (一)

在如果程序中的某一个窗口中打开另外一个窗口后,用户由于某种原因切换出程序。想要返回来的时候,通常的做法是打开一个任务管理器,然后选中当前的程序切换回来。
但是在SmartPhone的程序中,多个窗口在任务管理器中都回出现,例如在任务管理器中同时出现Form1和Form2,用户可能就会不知道需要激活那个窗口了。如果Form2是在Form1中打开的,用户这会儿激活了Form1,那么用户可能就无法继续操作。
所以,可以采用如下方法来解决:
public class Form2 : System.Windows.Forms.Form
{
    
private System.Windows.Forms.Form _previousForm;
    
private string _previousText;
    
public Form2(System.Windows.Forms.Form previousForm):this()
    
{
        
this._previousForm = previousForm;
        
this._previousText = this._previousForm.Text;
        
this._previousForm.Text = "";
    }

    
    
//将本身的构造函数设置成为私有的
    private Form2()
    
{
        InitializeComponent();
    }

    
private void Form2_Closed(object sender, EventArgs e)
    
{
        
this._previousForm.Text = this._previousText;
    }
    
}

首先将Form2的构造函数设置成为私有的,然后另外写一个构造函数。
然后在Form1中需要调用Form2的地方采用如下方式:
Form2 f=new Form2(this);
f.ShowDialog();
这样,如果用户不小心切换出程序,在任务管理器里面看到的是中只是你的程序的当前的激活的窗口,那么在激活该窗口也就不会出现问题了。

btw:在我的PPC版的列车时刻表中,由于没有采用多窗口,也就没有时间对此作验证,有兴趣的朋友可以试试看。