Console轉WinForm C#選擇 Windows窗體應用程序 時不小心選了 控制檯應用程序 解決辦法

如果VisualStudio 選擇"Windows窗體應用程序"時不小心選了"控制檯應用程序" 時 的解決辦法爲:

以下以MicrosoftVisual Studio Permium 2012  版本11.0.61219.00 Update 5 爲例

1.在此工程裏新建立一個"Windows窗體應用程序" 

1.1項目點擊右鍵 ->添加->新建項->Windows窗體

1.2在1.1完成後,再在Program.cs裏增加命名空間:using System.Windows.Forms;

然後在Program.cs主程序裏添加 

 Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(newForm1_MainForm());

其中 Form1_MainForm爲我門剛剛1.1中添加的窗體,然後就可以正常操作了。

例子如下圖

 

2.此時運行時會有個黑框出現,但不影響功能:
  去掉黑框我知道的暫時有兩種方法:
  2.1 方法一:還是項目中點擊右鍵->屬性->應用程序->輸出類型->Windows應用程序->然後重新生成,就OK了,這種最簡便。
  2.2 方法二:代碼實現,我們增加導入user32.dll

代碼中增加:

usingSystem.Runtime.InteropServices;    //命名空間增加 

  #region隱藏窗口

        [DllImport("user32.dll", EntryPoint= "ShowWindow", SetLastError = true)] //導入庫

        privatestaticexternboolShowWindow(IntPtr hWnd, uint nCmdShow);

//IntPtr hWnd,hWnd指窗口句柄;uint nCmdShownCmdShow指定窗口如何顯示的參數

 

        [DllImport("user32.dll",EntryPoint = "FindWindow",SetLastError = true)]

        privatestaticexternIntPtr FindWindow(stringlpClassName, string lpWindowName);

// IpClassName:指向一個指定了類名的空結束字符串,或一個標識類名字符串的成員的指針。如果該參數爲一個成員,則它必須爲前次調用theGlobafAddAtom函數產生的全局成員。該成員爲16位,必須位於IpClassName的低 16位,高位必須爲 0。
//    IpWindowName:指向一個指定了窗口名(窗口標題)的空結束字符串。如果該參數爲空,則爲所有窗口全匹配。
  //  返回值:如果函數成功,返回值爲具有指定類名和窗口名的窗口句柄;如果函數失敗,返回值爲NULL。

 

        publicstaticvoidWindowHide(string consoleTitle)

        {

            IntPtr a = FindWindow("ConsoleWindowClass",consoleTitle);

            if(a != IntPtr.Zero)  //如爲true 則隱藏窗口,如爲false 則無需隱藏窗口

               ShowWindow(a,0);//隱藏窗口 

      

        }

        #endregion
 

http://bbs.csdn.net/topics/380186377

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章