接上文: 列车时刻表 开发回顾 (一)
在如果程序中的某一个窗口中打开另外一个窗口后,用户由于某种原因切换出程序。想要返回来的时候,通常的做法是打开一个任务管理器,然后选中当前的程序切换回来。
但是在SmartPhone的程序中,多个窗口在任务管理器中都回出现,例如在任务管理器中同时出现Form1和Form2,用户可能就会不知道需要激活那个窗口了。如果Form2是在Form1中打开的,用户这会儿激活了Form1,那么用户可能就无法继续操作。
所以,可以采用如下方法来解决:
首先将Form2的构造函数设置成为私有的,然后另外写一个构造函数。
然后在Form1中需要调用Form2的地方采用如下方式:
这样,如果用户不小心切换出程序,在任务管理器里面看到的是中只是你的程序的当前的激活的窗口,那么在激活该窗口也就不会出现问题了。
btw:在我的PPC版的列车时刻表中,由于没有采用多窗口,也就没有时间对此作验证,有兴趣的朋友可以试试看。
在如果程序中的某一个窗口中打开另外一个窗口后,用户由于某种原因切换出程序。想要返回来的时候,通常的做法是打开一个任务管理器,然后选中当前的程序切换回来。
但是在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;
}
}
{
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;
}
}
然后在Form1中需要调用Form2的地方采用如下方式:
Form2 f=new Form2(this);
f.ShowDialog();
f.ShowDialog();
btw:在我的PPC版的列车时刻表中,由于没有采用多窗口,也就没有时间对此作验证,有兴趣的朋友可以试试看。