Descargo de responsabilidad
Hay una manera de lograr esto que es bastante simple, pero no sugeriría que sea un buen enfoque para una aplicación que vas a dejar que otras personas vean. Pero si algún desarrollador necesita mostrar la consola y los formularios de Windows al mismo tiempo, se puede hacer con bastante facilidad.
Este método también admite mostrar solo la ventana de la consola, pero no admite mostrar solo el formulario de Windows, es decir, la consola siempre se mostrará. Puede sólo interactúan (es decir, recibir datos - Console.ReadLine()
, Console.Read()
) con la ventana de la consola si no se presenta las formas de las ventanas; salida a la consola -Console.WriteLine()
- funciona en ambos modos.
Esto se proporciona tal cual; no hay garantías de que esto no hará algo horrible más adelante, pero funciona.
Pasos del proyecto
Comience desde una aplicación de consola estándar .
Marque el Main
método como[STAThread]
Agregue una referencia en su proyecto a System.Windows.Forms
Agregue un formulario de Windows a su proyecto.
Agregue el código de inicio estándar de Windows a su Main
método:
Resultado final
Tendrá una aplicación que muestra la Consola y opcionalmente formularios de Windows.
Código de muestra
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");
}
}
}