情景如下:
1. c# winform
2. login画面,若干业务画面
3. User可以通过login画面登陆系统后,可以操作若干业务画面
4. 当UserA操作系统时,UserB想切换到他的用户下操作,这时logout. UserA操作的业务画面 以及上面的数据,状态等 都保留
5. 当UserB操作系统时, UserA想重新切换回来时,业务画面的数据,状态等应为logout之前保留的业务画面
请问各位高手如何实现??? 多线程吗? 希望有好的解决方案。 谢谢各位。

解决方案 »

  1.   

    建立个保存数据的LIST类 来保存操作数据.根据登陆的不同度不同的LIST数据~不能解决?
    另外这个和多线程没什么关系把
      

  2.   

    说实话,需求有点BT。一   在一台计算机上,两个用户切换,解决方案:这个东西,在客户端做。在退出按钮的时候,把当前打开的Form窗体,
    以及该窗体中的所有的值,包括输入的文本,DataGrid上绑定的DataSet等数据,全部按照一定格式记录下来。
    当然是记录在内存中,而且用户没有把软件关闭。在登陆窗口,当用户登入的时候,判断内存里面有没有他操作的数据,如果有的话将相应的Form显示出来,并将数据显示出来。具体怎么存取,以什么格式来存取,需要你自己来衡量。 看是DataSet来做,还是HashTable,或者你自己定义的存储结构。
    二  在不同计算机上,两个用户切换,解决方案:
    同理,要把当前操作的数据保存下来,但是需要保存到服务器端,而不是客户端。在登陆的时候,需要从服务器端获取改帐号的最近的操作记录,重新构建Form,填充数据。和 1 不同的是,你这个时候就只能用服务器的资源来做这件事情,如果没有服务器端,那就只能把数据存储到数据库的一系列的表里面了。
      

  3.   

    同意ls。
    不过可以在客户端维护一个已登录过的用户对象数据结构,用户对象里面应该有记录登录状态的变量,
    当切换用户时,从本地查询是否登录过,如果登录过,则读取帐号密码等自动进行登录,然后重构Form。
      

  4.   

    直接将前一用户的Form调用Hide()方法,之后切换回用户时Show(),这样会有什么问题吗?
      

  5.   

    楼主需求说得不够明白,当从UserB切换回UserA时是要求画面包括自己的成员变量全部一模一样(即完全还原),还是只要某些主要数据还保留(比如当前编辑的数据的主键等等)?
      

  6.   

    说的确实很不清楚,你完全可以用dataset来保存这些数据,当数据达到一定的大小可以写入xml文件,或者只有两个用户的话,只需在logout的时候去保存两张表,来回替换就行了