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

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