各位,我自己写了一个控件,然后将控件拖到主窗体。
但是还是在设计的时候,那个控件上就开始运行操作了。我希望设计的时候停止操作。然后就使用designmode判断然后return,但不行。
可以判断进程名是否等于devenv.exe然后return吗?可以的话,代码怎么写呢?谢谢

解决方案 »

  1.   

    System.Diagnostics.Process myproc= new System.Diagnostics.Process();
    try{
    foreach (Process thisproc in Process.GetProcessesByName(processName)) {
    if(!thisproc.CloseMainWindow()){
    {}
    }
    }
    }
    catch(Exception Exc)
    {
    }
     GC.Collect();
      

  2.   

    为什么使用DesignMode不行,把代码贴出来看看?
      

  3.   

    c#判断程序是否运行 
       string name = "aaa";//程序进程名称
       int ProgressCount = 0123456;//判断进程是否运行的标识
       Process[] prc = Process.GetProcesses(); 
       foreach(Process pr in prc) //遍历整个进程
       {  
                if (name == pr.ProcessName)  //如果进程存在
                {     
                        ProgressCount = 0; //计数器清空
                         return;
                }  
       }
       if(ProgressCount!=0)//如果计数器不为0,说名所指定程序没有运行
       {
        try
        {
         //调用外部程序
         Process MyProcess = new Process();
         MyProcess.StartInfo.FileName = "d:/aaa.exe";
         MyProcess.StartInfo.Verb = "Open";
         MyProcess.StartInfo.CreateNoWindow = true;
         MyProcess.Start();
        }
        catch(Exception d)
        {
         MessageBox.Show(d.Message+"","提示!!!!");
        }
       }
       else
       {
        MessageBox.Show("对不起,本地已经有系统正在运行!\n.","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
       } 
    我正在使用《Csdn收音机》第一时间获取最新动态!
      

  4.   

    private void RecorderViewer_Load(object sender, EventArgs e)
            {                        
               if(DesignMode) return;
           }
      

  5.   

    哦,知道为什么了,因为是控件里嵌套控件,所以designmode只是第一层,对于第二层是不管用的
      

  6.   

    谢谢楼上几位,解决了。我把方案写一下,以便日后自己查看,也方便给碰巧遇到同问题的朋友一些参考:
    devenv.exe是c#的进程,应该是在设计时候的。所以判断进程是否与那个相等就类似于是自己写一个designmode了。 bool IsThisProcess()
            {
                Process p = Process.GetCurrentProcess();
                if (p.ProcessName == "devenv")
                {                return true;
                }
                else
                {
                    return false;
                }
            }
    然后在需要停止操作的那层控件里判断一下private void SecondUserCon_Load(object sender, EventArgs e)
            {
                if (IsThisProcess()) return;    
            }大家可以试试,在第二层usercontrol里用designmode确实是行不通的,所以只好自己写一个了。