将 C# 控制台应用程序与 GUI 集成
Integrate a C# console application with a GUI
我从头开始使用 C# 开发不到 3 个月,我目前得到的是一个控制台应用程序,使用 Visual Studio 2015 制作。此应用程序使用 Web 服务,XML 被反序列化、格式化并保存在 Access 数据库中,最后将成功或错误 XML 发送回 Web 服务器。 3 class 个组成了应用程序:主流 class、一个 SOAP 客户端 class 和一个数据库 class.
现在我发布这个的原因是因为我需要将控制台应用程序与 GUI 集成,其中应该显示从反序列化 XML 获得的一些数据(这是涉众在进入开发阶段之前没有考虑过的项目),但我不知道该怎么做。
到目前为止,我正在阅读有关 "Building WPF Applications" 和 "Windows Forms" 的内容,但是文档太多了,我不知道我不知道我是否走在正确的道路上,所以在我开始浪费时间编码可能不是将我的控制台应用程序与 GUI 集成[=23=的最佳选择之前,你们能否提供一些指导? ]?有没有办法让控制台应用程序成为基于 GUI 的应用程序?
如果您向我提供实用的教程链接,我将不胜感激,他们可以在其中快速实现 GUI,我的时间 运行 已经结束,我需要立即开始编码。非常感谢您阅读本文并帮助我。
如果您只是在寻找一个基本的 GUI 并且不太担心它看起来很漂亮,我建议您右键单击您的项目 -> 添加->Windows 表单。
然后,将您的控制台应用程序转变为基于 GUI 的应用程序就像实例化您的表单派生 class 并调用 .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
}
就这么简单。我建议您将新的 class 作为 Windows 表单添加到您的项目中,而不仅仅是 class,以便您可以访问表单设计器。当然,将字段添加到表单 class 并适当填充 GUI 取决于您。
编辑:如果您希望完全替换控制台,请右键单击您的项目 -> 属性,然后将 "output type" 更改为 Windows 应用程序。
您可以在表单中放置一个 TextBox,并将控制台中的任何内容重定向到 TextBox。
查看此内容了解更多信息
Redirecting Console.WriteLine() to Textbox
无需进入 "why" 区域,如果您有一个控制台应用程序项目,您可以右键单击项目 -> 属性 -> 应用程序并将输出类型更改为 Class 库(或 Widows申请)。
如果您选择 class 图书馆,那么您可以从任何地方使用您的图书馆。
您要实现的目标实际上相对简单直接。您需要从新的 Windows Forms
或 WPF
应用程序启动现有的控制台应用程序进程并订阅其输入和输出流。
如果您不想将当前的控制台应用程序显示为可见 window,请记住将 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 控件并排放置,这些控件可以对您的数据进行进一步处理。
我从头开始使用 C# 开发不到 3 个月,我目前得到的是一个控制台应用程序,使用 Visual Studio 2015 制作。此应用程序使用 Web 服务,XML 被反序列化、格式化并保存在 Access 数据库中,最后将成功或错误 XML 发送回 Web 服务器。 3 class 个组成了应用程序:主流 class、一个 SOAP 客户端 class 和一个数据库 class.
现在我发布这个的原因是因为我需要将控制台应用程序与 GUI 集成,其中应该显示从反序列化 XML 获得的一些数据(这是涉众在进入开发阶段之前没有考虑过的项目),但我不知道该怎么做。
到目前为止,我正在阅读有关 "Building WPF Applications" 和 "Windows Forms" 的内容,但是文档太多了,我不知道我不知道我是否走在正确的道路上,所以在我开始浪费时间编码可能不是将我的控制台应用程序与 GUI 集成[=23=的最佳选择之前,你们能否提供一些指导? ]?有没有办法让控制台应用程序成为基于 GUI 的应用程序?
如果您向我提供实用的教程链接,我将不胜感激,他们可以在其中快速实现 GUI,我的时间 运行 已经结束,我需要立即开始编码。非常感谢您阅读本文并帮助我。
如果您只是在寻找一个基本的 GUI 并且不太担心它看起来很漂亮,我建议您右键单击您的项目 -> 添加->Windows 表单。
然后,将您的控制台应用程序转变为基于 GUI 的应用程序就像实例化您的表单派生 class 并调用 .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
}
就这么简单。我建议您将新的 class 作为 Windows 表单添加到您的项目中,而不仅仅是 class,以便您可以访问表单设计器。当然,将字段添加到表单 class 并适当填充 GUI 取决于您。
编辑:如果您希望完全替换控制台,请右键单击您的项目 -> 属性,然后将 "output type" 更改为 Windows 应用程序。
您可以在表单中放置一个 TextBox,并将控制台中的任何内容重定向到 TextBox。
查看此内容了解更多信息 Redirecting Console.WriteLine() to Textbox
无需进入 "why" 区域,如果您有一个控制台应用程序项目,您可以右键单击项目 -> 属性 -> 应用程序并将输出类型更改为 Class 库(或 Widows申请)。
如果您选择 class 图书馆,那么您可以从任何地方使用您的图书馆。
您要实现的目标实际上相对简单直接。您需要从新的 Windows Forms
或 WPF
应用程序启动现有的控制台应用程序进程并订阅其输入和输出流。
如果您不想将当前的控制台应用程序显示为可见 window,请记住将 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 控件并排放置,这些控件可以对您的数据进行进一步处理。