我的回收站

技术文章、随笔、文摘及其它
posts - 91, comments - 604, trackbacks - 1, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
接上文: 列车时刻表 开发回顾 (一)

在如果程序中的某一个窗口中打开另外一个窗口后,用户由于某种原因切换出程序。想要返回来的时候,通常的做法是打开一个任务管理器,然后选中当前的程序切换回来。
但是在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版的列车时刻表中,由于没有采用多窗口,也就没有时间对此作验证,有兴趣的朋友可以试试看。

Feedback

#1楼 [楼主]   回复  引用  查看    

2005-06-30 13:19 by twodays      
后继报道:
在后来的PPC试验中,我使用了Form1.Hide()的方法,这样也可以将Form隐藏,然后再Form2的Closed事件中再将Form1显示出来。

#2楼    回复  引用  查看    

2006-09-12 17:55 by 音乐虫子      
受益匪浅

#3楼    回复  引用    

2008-04-29 07:30 by 火车时刻 [未注册用户]
受益匪浅

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-08-02 15:17 编辑过


相关链接: