aviso Legal
Existe uma maneira de fazer isso que é bastante simples, mas eu não sugeriria que seja uma boa abordagem para um aplicativo que você vai permitir que outras pessoas vejam. Mas se você tiver algum desenvolvedor que precise mostrar o console e os formulários do Windows ao mesmo tempo, isso pode ser feito facilmente.
Este método também suporta a exibição apenas da janela do Console, mas não oferece suporte à exibição apenas do Windows Form - ou seja, o Console sempre será mostrado. Você só pode interagir (ou seja, receber dados - Console.ReadLine()
, Console.Read()
) com a janela do console se não mostrar os formulários da janela; saída para o console - Console.WriteLine()
- funciona em ambos os modos.
Isso é fornecido como está; não há garantias de que isso não fará algo horrível mais tarde, mas funciona.
Etapas do projeto
Comece com um aplicativo de console padrão .
Marque o Main
método como[STAThread]
Adicione uma referência em seu projeto para System.Windows.Forms
Adicione um Windows Form ao seu projeto.
Adicione o código de inicialização padrão do Windows ao seu Main
método:
Resultado final
Você terá um aplicativo que mostra o Console e, opcionalmente, os formulários do Windows.
Código de amostra
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ConsoleApplication9 {
class Program {
[STAThread]
static void Main(string[] args) {
if (args.Length > 0 && args[0] == "console") {
Console.WriteLine("Hello world!");
Console.ReadLine();
}
else {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
}
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ConsoleApplication9 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Click(object sender, EventArgs e) {
Console.WriteLine("Clicked");
}
}
}