【NCRE项目】C#实现TabControl切换打开不同文件夹

   【需求】


    在做NCRE项目的时候,老师提出了一个新需求,不要再让学生点击“打开考生目录”这个按钮,要求做成切换Tab键的时候,打开不同的文件夹,而且只能打开一个。

   【思考】


    1、在TabControl的SelectIndexChanged事件里编写打开文件夹按钮;

    2、编写Switch case 语句,点击不同的Tab,打开相应的文件夹;

    3、方案一:使用单例模式,只显示一个文件夹,不能显示多个;

       方案二:当切换Tab键的时候,在事件里编写代码:先关闭上一个文件夹,再打开与Tab键相对应的文件夹。

    

    【实现代码】


     1、打开文件夹:

     (1)首先,添加引用

      
 using System.Diagnostics;


     (2)其次,编写代码:
      以打开excelkt文件夹为例:

  
   string path=@"C:\Hb15Dir\" + FrmLogin.studentID + @"\excelkt\";
       System.Diagnostics.Process.Start("explorer.exe", path);



     2、关闭资源管理器进程(关闭文件夹):

     只要有打开的文件夹,就先关闭:
      
 Process[] processes=Process.GetProcessesByName("explorer");  
       foreach (Process p in processes)
       {
             p.Kill();
             p.Close();
       }

     

    【遗留问题】


     1、要求每次只能有一个文件夹打开展示给用户,而且还要切换到不同的文件夹,这样的问题可以用单例模式吗?我没有做实验,不知道可否实现。
    这个问题抽象一下就是:只能打开一个资源管理器,但是每次切换显示的内容还要不同。
   
    2、像我上面写的关闭资源管理器的进程代码的意思是只要有打开的资源管理器就关闭,不管它是怎么打开的。而在现实生活中,如果用户不是通过一级考试系统打开的资源管理器,那他一切换Tab键就会连这个一起关闭了,这样好吗?符合需求吗?如果是这样的话,那如何判断用户上一个点击的Tab键所对应的文件目录呢?


    【总结】

     
     以上就是解决这个问题时的思考,代码功能虽然实现了,但是会不会有更优的代码来解决这个问题呢?这是一个值得思考的问题!

你可能感兴趣的:(【NCRE项目】C#实现TabControl切换打开不同文件夹)