Интегрировать консольное приложение C# с графическим интерфейсом
Я разрабатывал с помощью C# с нуля менее 3 месяцев, и в настоящее время я получил консольное приложение, созданное с помощью Visual Studio 2015. Это приложение использует веб-службу, XML-код десериализуется, форматируется и сохраняется в базе данных Access, и, наконец, удачный или ошибочный XML отправляется обратно на веб-сервер. Приложение состоит из трех классов: класс основного потока, класс клиента SOAP и класс БД.
Теперь причина, по которой я публикую это, заключается в том, что мне нужно интегрировать консольное приложение с графическим интерфейсом, в котором должны отображаться некоторые данные, полученные из десериализованного XML (это расширение проекта, о котором заинтересованные стороны не думали прежде чем перейти на стадию разработки), но я понятия не имею, как это сделать.
До сих пор я читаю о "Сборке приложений WPF" и "Windows Forms", но документация перегружена, и я не знаю, нахожусь ли я на правильном пути, поэтому вы, ребята, можете дать некоторые рекомендации, прежде чем я начну тратить время на кодирование? что, возможно, не лучший вариант для интеграции моего консольного приложения с графическим интерфейсом? Есть ли способ заставить консольное приложение стать приложением с графическим интерфейсом?
Буду признателен, если вы предоставите мне практические ссылки на учебные пособия, в которых они быстро реализуют GUI, у меня заканчивается время, и мне нужно начать писать код прямо сейчас Большое спасибо за то, что прочитали это и помогли мне.
4 ответа
Если вы просто ищете простой графический интерфейс и не слишком беспокоитесь о том, чтобы он выглядел безупречно, я бы посоветовал вам щелкнуть правой кнопкой мыши на вашем проекте -> add->Windows Form.
Затем превратить ваше консольное приложение в приложение с графическим интерфейсом так же просто, как создать экземпляр класса, производного от формы, и вызвать.ShowDialog().
Пример:
using System.Windows.Forms;
//Note: if you create a new class by clicking PROJECT->Add Windows Form,
//then this class definition and the constructor are automatically created for you.
//Open MyFancyForm.cs, right click on the form, and click View Code to see it.
public partial class MyFancyForm : Form
{
public MyFancyForm()
{
InitializeComponent();
}
}
static void Main(string[] args)
{
var guiForm = new MyFancyForm();
guiForm.ShowDialog();//This "opens" the GUI on your screen
}
Это так просто. Я предлагаю вам добавить добавить новый класс в ваш проект как WindowsForm, а не просто класс, чтобы у вас был доступ к конструктору форм. Конечно, это зависит от вас, чтобы добавить поля в свой класс формы и сделать так, чтобы он соответствующим образом заполнял графический интерфейс.
Редактировать: если вы хотите полностью заменить Консоль, щелкните правой кнопкой мыши на свой проект-> Свойства, а затем измените "Тип вывода" на Приложение Windows.
То, что вы пытаетесь достичь, на самом деле относительно просто и понятно. Вам нужно запустить существующий процесс консольного приложения из нового Windows Forms
или же WPF
приложение и подписаться на его входные и выходные потоки.
Если вы не хотите показывать ваше текущее консольное приложение как видимое окно, не забудьте установить для CreateNoWindow значение true.
var processStartInfo = new ProcessStartInfo(fileName, arguments);
processStartInfo.UseShellExecute = false;
processStartInfo.ErrorDialog = false;
processStartInfo.CreateNoWindow = true;
// etc.
Вот статья, которая проходит все этапы: Встраивание консоли в приложение C#
Код вышеприведенной статьи можно найти на GitHub, если вы хотите поближе взглянуть. Вот пример того, какой тип встраивания может быть сделан:
В рамках проекта вы можете легко спрятать всю консоль или располагать ее рядом с некоторыми пользовательскими элементами управления пользовательского интерфейса, которые выполняют дальнейшую обработку ваших данных.
Не вводя в области "почему", если у вас есть проект консольного приложения, вы можете щелкнуть правой кнопкой мыши на Project -> Properties -> Application и изменить тип вывода на Class Library (или на приложение Widows).
Если вы выбираете библиотеку классов, вы можете использовать вашу библиотеку откуда угодно.
Вы можете поместить TextBox в вашу форму и перенаправить все, что будет в консоли, на TextBox.
см. это для получения дополнительной информации Перенаправление Console.WriteLine() в Textbox