Zrzeczenie się
Jest na to sposób, który jest dość prosty, ale nie sugerowałbym, że jest to dobre podejście do aplikacji, którą chcesz pokazać innym. Ale jeśli jakiś programista musiałby wyświetlać jednocześnie konsolę i formularze systemu Windows, można to zrobić całkiem łatwo.
Ta metoda obsługuje również wyświetlanie tylko okna konsoli, ale nie obsługuje wyświetlania tylko formularza systemu Windows - tzn. Konsola będzie zawsze wyświetlana. Możesz wchodzić w interakcje (tj. Odbierać dane - Console.ReadLine()
, Console.Read()
) z oknem konsoli tylko wtedy, gdy nie pokazujesz formularzy Windows; wyjście do konsoli - Console.WriteLine()
- działa w obu trybach.
Jest to dostarczane w stanie, w jakim jest; nie ma gwarancji, że to nie zrobi później czegoś strasznego, ale działa.
Etapy projektu
Zacznij od standardowej aplikacji konsolowej .
Oznacz Main
metodę jako[STAThread]
Dodaj odwołanie w projekcie do System.Windows.Forms
Dodaj formularz systemu Windows do projektu.
Dodaj standardowy kod startowy systemu Windows do swojej Main
metody:
Wynik końcowy
Będziesz mieć aplikację, która pokazuje konsolę i opcjonalnie formularze Windows.
Przykładowy kod
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");
}
}
}