C# 将数据从windows窗体发送到控制台

C# 将数据从windows窗体发送到控制台,c#,winforms,console,C#,Winforms,Console,我需要从控制台应用程序打开并向windows窗体发送数据,然后在窗体内的流程完成并关闭后,将生成的数据发送回控制台应用程序 目前我已经实现了打开表单并发送数据的部分,如下所示 C#控制台 private static void open_form() { ...... Application.EnableVisualStyles(); Application.Run(new Form1(data)); //I need to capture the data return

我需要从控制台应用程序打开并向windows窗体发送数据,然后在窗体内的流程完成并关闭后,将生成的数据发送回控制台应用程序

目前我已经实现了打开表单并发送数据的部分,如下所示

C#控制台

private static void open_form()
{
   ......
   Application.EnableVisualStyles();
   Application.Run(new Form1(data));
   //I need to capture the data returned from the form when the process is done inside it
}        
C#表格

string accNumVal = "";

public Form1(string accNum)
{
   accNumVal = accNum;
   InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
   accNumVal = accNumVal + 10;

   //return accNumVal from here back to the console
   this.Close();
}

我已经为这个问题挣扎了一段时间,我有点匆忙。如果您的专家能够提供一些示例代码段/示例/参考来实现此需求,那将是非常棒的

一种方法是创建一个事件并订阅它。之后,您可以将其打印到控制台。稍后将添加示例

在您的情况下,您应该将消息放在按钮单击中,而不是加载中

这是你的表格

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    //This is your Event, Call this to send message
    public event EventHandler myEvent;

    private void Form1_Load(object sender, EventArgs e)
    {
         //How to call your Event
        if(myEvent != null)
            myEvent(this, new MyEventArgs() { Message = "Here is a Message" });
    }

}
//Your event Arguments to pass your message
public class MyEventArgs : EventArgs
{
    public String Message
    {
        get;
        set;
    }
}
这将是你的主要目标:

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        //How to ensure that you'll get your message
        var myForm = new Form1();
        myForm.myEvent += myForm_myEvent;
        Application.Run(new Form1());
    }

    //What to do once you get your Message
    static void myForm_myEvent(object sender, EventArgs e)
    {
        var myEventArgs = (MyEventArgs)e;
        Console.WriteLine(myEventArgs.Message);
    }
}

那么,您到底遇到了什么问题?@Savanna我想在用户关闭由控制台应用程序打开的表单应用程序后将值返回控制台应用程序只要将变量作为公共属性公开即可。@HansPassant感谢您的回复。。但我该如何做。。一个是驻留在Program.cs和其他文件中的控制台如果windows窗体位于同一项目中,请创建一个公共函数来发送变量。在同一个名称空间中,它将起作用。感谢您的回答,先生..我将尝试并发回:)