2016-12-13 4 views
2

私はC#を勉強していますが、「例」というプロジェクトが1つあります。このプロジェクトでは、私はいくつかのWinFormsを持っていて、私はプログラムを起動するときにWinFormや別のアプリケーションを呼び出す方法を知っています(ロードしたいフォームを反映するためにApplication.Runパラメータを変更するだけです)。WinFormとコンソールをプログラム的に切り替える

私が知りたいことは、プログラムで何らかの方法でコンソールアプリケーションを起動できますか?

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new ______); //I left ______ because I change the name to the form I want 
} 

だから私は何をしたいのかコメントがされていますので...私はこのようになりますプロジェクトを(それは私がそれを作成した初めてのWinFormだった)を作成したときにVisual Studioが行われ、このプログラムのクラスを持っていますそれを外に出してこれを実行してください:

static void Main() 
{ 
    new ConsoleApplication(); 
} 

そしてコンソールアプリケーションを実行してください。今はConsoleApplicationと呼ばれるクラスを実行しますが、実際にはConsole Appとして実行されません。つまり、ConsoleApplicationは次のようになります。

class ConsoleApplication 
{ 
    public ConsoleApplication() 
    { 
     Console.ReadLine(); 
    } 
} 

コンソールは表示されません。別のプロジェクトでコンソールアプリケーションを作成する必要はありますか?私はすべての私の例(コンソールとWinForms)を持つ1つのプロジェクトを持って、Mainメソッドを変更して起動するプログラムを教えてほしいと思っていました。それを行う方法はありますか?

ありがとうございます!

+0

"Windowsアプリケーション"ではなく "コンソールアプリケーション"にプロパティのプロジェクトタイプを設定 –

+0

@ m.rogalskiありがとう!それが私の必要なものです!今それは私がそれをしたい方法で動作します:) – Brian

答えて

1

これを試してください。 WinFormに追加します。

using System.Runtime.InteropServices; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    AllocConsole(); 
} 

[DllImport("kernel32.dll", SetLastError = true)] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool AllocConsole(); 
1

コンソールアプリケーションを作成し、参照番号System.Windows.Forms.dllを作成します。次に、フォームを作成し、次のように行くことができます:私はちょうどあなたがフォームのアプリを持って、コンソールを開きたいきた見てきました

using System; 
using System.ComponentModel; 

namespace TestCWF 
{ 
    internal class Program 
    { 
    private static void Main(string[] args) 
    { 
     var mf = new MainForm(); 
     mf.ShowDialog(); 

     Console.ReadKey(); 
    } 
    } 
} 

。この場合、スタンの答えはより良く適合するかもしれません。

関連する問題