gpt4 book ai didi

c# - C#将Windows窗体应用程序添加到控制台应用程序

转载 作者:行者123 更新时间:2023-12-03 11:13:00 26 4
gpt4 key购买 nike

我有一个控制台应用程序在后台执行某些操作,因此我想使之能够使用户更改控制台应用程序正在执行的某些操作。

我想添加Windows窗体应用程序以仅获取用户输入并将其发送到控制台应用程序以使用。我已经看过,找不到我想要的东西

我发现了这个问题-Add GUI to Existing Code in Visual Studio-但这并没有太大帮助。

我有这个:

bool OnOrOff = true; 

但是我想检查是否选中了Windows窗体中的复选框,而不是像这样将其设置为true:

在Windows窗体上,该复选框名为CheckOnOrOff并被选中。
bool OnOrOff = CheckOnOrOff.Checked();

最佳答案

我假设用户可以在控制台应用程序运行时更改设置,并且应该立即生效。将winforms应用程序添加为控制台中的引用将无济于事,因为它将是一个不同的应用程序。所以这是我的建议:

  • 制作一个新的winforms应用程序,并将输出类型从“Windows应用程序”更改为“控制台应用程序”,以便我们可以看到控制台。将控制台逻辑过程移植到winforms项目
  • 添加一个新的静态类,该类将在winforms和控制台之间保留标志。示例:

  • namespace FormWithConsole {
    public static class SharedData {
    public static bool Feature01 { get; set; }
    }
    }
  • 在Windows窗体中添加一个复选框,并将以下代码添加到该复选框已更改的事件中:

  • private void checkBox1_CheckedChanged(object sender, EventArgs e) {
    SharedData.Feature01 = checkBox1.Checked;
    }
  • 添加一个按钮以启动控制台进程,并使用线程来启动控制台进程,如下所示:

  • Thread thread;
    private void button1_Click(object sender, EventArgs e) {
    if (thread != null) {
    try {
    Console.WriteLine("Aborting current process");
    thread.Abort();
    thread = null
    }
    catch (ThreadAbortException) { }
    }
    ConsoleProcess process = new ConsoleProcess();
    thread = new Thread(process.StartProcess);
    thread.IsBackground = true;
    thread.Start();
    }
  • 这是ConsoleProcess类,用于保存控制台逻辑

  • class ConsoleProcess {
    public void StartProcess() {
    while (true) {
    if (SharedData.Feature01) {
    // Do something here
    }
    Console.WriteLine("Regular process here...");
    }
    }
    }

    如果要将表格最小化到系统托盘,请参阅 minimize app to system tray

    关于c# - C#将Windows窗体应用程序添加到控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41215450/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com