Отказ от ответственности
Есть довольно простой способ добиться этого, но я бы не сказал, что это хороший подход для приложения, которое вы собираетесь показать другим людям. Но если у вас есть потребность разработчика одновременно отображать консоль и формы Windows, это можно сделать довольно легко.
Этот метод также поддерживает отображение только окна консоли, но не поддерживает отображение только формы Windows, т. Е. Консоль будет отображаться всегда. Вы можете взаимодействовать (т.е. получать данные - Console.ReadLine()
, Console.Read()
) с окном консоли, только если вы не показываете формы окна; вывод в консоль -Console.WriteLine()
- работает в обоих режимах.
Это предоставляется как есть; нет никаких гарантий, что это не приведет к чему-то ужасному позже, но это работает.
Шаги проекта
Начать со стандартного консольного приложения .
Отметьте Main
метод как[STAThread]
Добавьте ссылку в свой проект на System.Windows.Forms
Добавить для Windows Form .
Добавьте стандартный стартовый код Windows в свой Main
метод :
Конечный результат
У вас будет приложение, которое отображает консоль и, возможно, формы Windows.
Образец кода
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");
}
}
}