c#中:
1、使用如下语句显示子窗体:
newform  childform=new newform();
newform.show();
如何防止出现相同的窗体?也就是始终不让相同的窗体出现第二次?2、如何编程实现关机和重起计算机?

解决方案 »

  1.   

    没有看明白你的意思,你的意思是说只要用到这个窗体的地方,都是个窗体句柄吗?那就用singleton模式,但是..我还是不明白你的意思..
      

  2.   

    是这样的:在一个窗体中,我点击一个菜单,让另外一个窗体出现;如果我再点击这个菜单,就不出现窗体了.也就是说,只出现一次.
    singleton模式是窗体属性吗?
      

  3.   

    1.在this.MdiChildren上遍历,if (StringType.StrCmp(this.MdiChildren[num1].Name.Trim(), FrmName, false) == 0),那就是有
    2.shutdown
      

  4.   

    重啟關機都可以用shutdown,輸入shutdown ? 看看就明白
      

  5.   

    newform.show();可以打开多个。
    newform.ShowDialog()就只能打开一个了。要重新启动或关机,可以查一下相关的资料,或到网上搜搜。
      

  6.   

    this.OwnedForms是主窗体的所有子窗体.通过它可获得当前所有的子窗体.
    在要显示新的子窗体之前, 先检测一遍当前的子窗体中是否有相同信息的窗体.
    类似以下的信息:
    for(int i = 0 ; i < this.OwnedForms.Length ; i ++)
    {
       if(this.OwnedForms[i].Text == 将要显示的窗体的名字)
       {
          说明已经存在这个窗体, 就不显示了.
       }
    }
      

  7.   

    机器上有一段vc++的关机代码lz参考一下,大部分都是调用api函数#include "stdafx.h"
    #include "test.h"
    #include "ExitDlg.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif HANDLE processHandle =  NULL;
       DWORD thisProcessID = 0;
       thisProcessID = GetCurrentProcessId();     //  得到当前进程的ID;
       if(!thisProcessID)
              return;
           processHandle = OpenProcess(PROCESS_ALL_ACCESS|STANDARD_RIGHTS_REQUIRED,FALSE,thisProcessID);  //  得到当前进程的句柄;
           if(!processHandle)
          return;       HANDLE tokenHandle = NULL;
       OpenProcessToken(processHandle,TOKEN_ADJUST_PRIVILEGES,&tokenHandle);  //  得到accessToken的句柄;
         if(!tokenHandle)
          return;

           CloseHandle(processHandle);  //  进程句柄使用结束后关闭;SeShutdownPrivilege       TOKEN_PRIVILEGES tp; 
           LUID luid;
           if(!LookupPrivilegeValue(NULL,"SeSecurityPrivilege",&luid))   //  给luid赋制值;
              return;    tp.PrivilegeCount = 1;
           tp.Privileges[0].Luid = luid;
           tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;       AdjustTokenPrivileges(tokenHandle,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),(PTOKEN_PRIVILEGES)NULL,(PDWORD)NULL); 
           if(GetLastError() != ERROR_SUCCESS)
              return; 
      
           if(!ExitWindowsEx(EWX_POWEROFF,0))
              return;
      

  8.   

    我也在找,只知道是说调用API,但是一个也没有回答是怎么样实现