Disclaimer
C'è un modo per ottenere ciò che è abbastanza semplice, ma non suggerirei che sia un buon approccio per un'app che farai vedere ad altre persone. Ma se uno sviluppatore ha bisogno di mostrare la console e i moduli di Windows allo stesso tempo, può essere fatto abbastanza facilmente.
Questo metodo supporta anche la visualizzazione solo della finestra della console, ma non supporta la visualizzazione solo del Windows Form, ovvero la console verrà sempre visualizzata. Puoi interagire (cioè ricevere dati - Console.ReadLine()
, Console.Read()
) con la finestra della console solo se non mostri i moduli di Windows; output su Console - Console.WriteLine()
- funziona in entrambe le modalità.
Viene fornito così com'è; nessuna garanzia che questo non farà qualcosa di orribile in seguito, ma funziona.
Fasi del progetto
Inizia da un'applicazione console standard .
Contrassegna il Main
metodo come[STAThread]
Aggiungere un riferimento nel progetto a System.Windows.Forms
Aggiungi un Windows Form al tuo progetto.
Aggiungi il codice di avvio standard di Windows al tuo Main
metodo:
Risultato finale
Avrai un'applicazione che mostra la Console e, facoltativamente, i moduli di Windows.
Codice d'esempio
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");
}
}
}