and*_*s_v 5 c# wpf user-interface console-application windowsformsintegration
我从头开始使用C#进行开发的时间不到3个月,目前我得到的是使用Visual Studio 2015制作的控制台应用程序。该应用程序使用Web服务,将XML反序列化,格式化并保存在Access数据库中,最后,成功或错误的XML被发送回Web服务器。应用程序由3个类组成:主流类,SOAP客户端类和DB类。
现在,我之所以发布它,是因为我需要将该控制台应用程序与GUI集成在一起,在其中应显示从反序列化XML获得的一些数据(这是项目涉众未曾想到的扩展)才进入开发阶段),但我不知道该怎么做。
到目前为止,我正在阅读有关“构建WPF应用程序”和“ Windows窗体”的信息,但是文档不胜枚举,而且我不知道我走的路是否正确,因此你们可以在开始浪费时间编写代码之前给一些指导吗?也许不是将控制台应用程序与GUI集成的最佳选择?有没有办法使控制台应用程序成为基于GUI的应用程序?
如果您为我提供了一些实用的教程链接,希望他们可以快速实现GUI,我的时间不多了,我需要立即开始编码。非常感谢您阅读本文并为我提供帮助。
您想要实现的目标实际上相对简单且直接。您需要从新的应用程序启动现有的控制台应用程序进程Windows Forms并WPF订阅其输入和输出流。
如果您不想将当前控制台应用程序显示为可见窗口,请记住将CreateNoWindow设置为 true。
var processStartInfo = new ProcessStartInfo(fileName, arguments);
processStartInfo.UseShellExecute = false;
processStartInfo.ErrorDialog = false;
processStartInfo.CreateNoWindow = true;
// etc.
Run Code Online (Sandbox Code Playgroud)
以下文章介绍了所有步骤:在 C# 应用程序中嵌入控制台
如果你想仔细查看的话,可以在GitHub上找到上面文章的代码。以下是可以进行哪种嵌入的示例:
通过该项目,您可以轻松隐藏整个控制台或将其与一些自定义 UI 控件并排放置,以进一步处理您的数据。
如果您只是在寻找一个准系统的 GUI 并且不太担心它看起来是否美观,我建议您右键单击您的项目 -> 添加 -> Windows 窗体。
然后,将控制台应用程序转换为基于 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
}
Run Code Online (Sandbox Code Playgroud)
就是这么简单。我建议您将一个新类作为 WindowsForm 添加到您的项目中,而不仅仅是一个类,以便您可以访问表单设计器。当然,您可以将字段添加到表单类并使其适当地填充 GUI。
编辑:如果您希望完全替换控制台,请右键单击您的项目->属性,然后将“输出类型”更改为 Windows 应用程序。