繁体   English   中英

将C#控制台应用程序与GUI集成

[英]Integrate a C# console application with a GUI

我从头开始使用C#开发不到3个月,我目前得到的是使用Visual Studio 2015制作的控制台应用程序。该应用程序使用Web服务,XML被反序列化,格式化并保存在Access数据库中,最后,成功或错误XML被发送回Web服务器。 构成应用程序的3个类:主流类,SOAP客户端类和DB类。

现在我之所以发布这个是因为我需要将控制台应用程序集成到GUI中,其中应该显示从反序列化的XML中获取的一些数据(这是利益相关者没有考虑的项目的扩展)在踩到开发阶段之前),但我不知道该怎么做。

到目前为止,我正在阅读“构建WPF应用程序”“Windows窗体”,但文档压倒性的我不知道我是否在正确的道路上,所以在我开始浪费时间编码之前你们可以给出一些指导这可能不是将我的控制台应用程序与GUI集成的最佳选择? 有没有办法让控制台应用程序成为基于GUI的应用程序?

如果您向我提供教程的实用链接,我会很感激,因为他们快速实现了GUI,我的时间已经不多了,我现在需要开始编码。 非常感谢您阅读并帮助我。

如果您只是在寻找一个准系统GUI并且不太担心它看起来很光滑,我建议您右键单击您的项目 - > add-> Windows Form。

然后,将您的控制台应用程序转换为基于GUI的应用程序就像实例化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而不是只是一个类添加到您的项目,以便您可以访问表单设计器。 当然,您可以在表单类中添加字段并使其适当填充GUI。

编辑:如果您希望完全替换控制台,请右键单击项目 - >属性,然后将“输出类型”更改为Windows应用程序。

你想要实现的目标实际上是相对简单和直接的。 您需要从新的Windows FormsWPF应用程序启动现有的控制台应用程序进程,并订阅其输入和输出流。

如果您不想将当前控制台应用程序显示为可见窗口,请记住将CreateNoWindow设置为true。

var processStartInfo = new ProcessStartInfo(fileName, arguments);
processStartInfo.UseShellExecute = false;
processStartInfo.ErrorDialog = false;
processStartInfo.CreateNoWindow = true;
// etc.

这是一篇介绍所有步骤的文章: 在C#应用程序中嵌入控制台

如果你想仔细看看上面文章的代码可以在GitHub找到 这是一个可以进行何种嵌入的示例:

在此输入图像描述

通过该项目,您可以轻松地隐藏整个控制台,或者使用一些自定义UI控件将其与数据进行进一步处理。

您可以将TextBox放在表单中,并将控制台中的任何内容重定向到TextBox。

有关详细信息,请参阅此内容将Console.WriteLine()重定向到文本框

如果您没有输入“why”区域,如果您有一个控制台应用程序项目,则可以右键单击Project - > Properties - > Application并将Output类型更改为Class Library(或Widows Application)。

如果您选择类库,那么您可以从任何地方使用您的库。

见附图......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM