1

我正在编写一个主要在控制台中工作的程序,但有时我需要使用表单。

我创建了一个 Windows 窗体,然后将输出切换到控制台。之后,我在项目中添加了一个表单 (Form2),现在我的代码如下所示:

#include "stdafx.h"
#include <iostream> // For std::cout and such
#include "Form1.h"
#include "Form2.h"

using namespace testing_forms;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 


    /* Instructions Block 1 */

    Application::Run(gcnew Form1());

    /* Instructions Block 2 */

    Application::Run(gcnew Form2());

    /* Instructions Block 3 */

    return 0;
}

所以,基本上,程序运行第一个指令块,然后调用一个表单,然后运行第二个指令块,依此类推。

但是,这不允许我在表单和控制台之间共享数据,因为它只是一个程序,所以我真的需要,比如用户名、整数等。

我能想到的唯一方法是保留一个文本文件并从控制台写入/读取/读取它以及共享信息的表单(我没有测试过),但是,老实说,我不太喜欢这个解决方案。

那么,如何仅使用(最好)变量在 Windows 窗体和控制台之间来回共享数据?

4

1 回答 1

1

有很多方法——可以使用套接字、管道、消息队列,可以将信息存储在数据库中,可以在控制台应用程序中托管 WCF 服务等。

但我不会在这里讨论哪些是最好的。确实,如果您遇到此问题,那么您很可能应该将整个解决方案设为 Windows 窗体/WPF 应用程序。在同一应用程序的表单之间传递信息要容易得多,特别是如果它们可以相互引用。他们只需要调用彼此的方法,或者访问彼此的属性,或者使用同一个静态类。都在同一个环境中,没有跨越应用程序边界。

如果您想将控制台保留在那里,您可以隐藏主窗体并打开一个单独的控制台应用程序。然后,您可以向此控制台提供任何相关文本。

深思熟虑。

于 2013-08-19T19:00:45.777 回答