9

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

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

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

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

4

4 回答 4

4

如果您只是在寻找准系统 GUI 并且不太担心它看起来很漂亮,我建议您右键单击您的项目 -> 添加 -> Windows 窗体。

然后,将您的控制台应用程序转换为基于 GUI 的应用程序就像实例化您的表单派生类并调用 .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 应用程序。

于 2016-08-11T18:03:13.343 回答
4

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

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

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

这是一篇介绍所有步骤的文章:Embedding a Console in a C# Application

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

在此处输入图像描述

使用该项目,您可以轻松隐藏整个控制台或将其与一些自定义 UI 控件并排放置,这些控件对您的数据进行进一步处理。

于 2016-08-11T18:11:44.593 回答
0

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

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

于 2016-08-11T18:05:16.307 回答
0

无需输入“为什么”区域,如果您有一个控制台应用程序项目,您可以右键单击项目 -> 属性 -> 应用程序并将输出类型更改为类库(或寡妇应用程序)。

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

见附图...

于 2016-08-11T18:06:57.190 回答