C#控制台应用程序作为Windows窗体

时间:2018-07-06 03:45:15

标签: c# winforms user-interface console-application

我在Visual Studio中以控制台应用程序启动了一个项目,现在发现我需要一个UI(窗体),但是当我运行该程序时,它就是一个控制台。无论如何,是否可以通过按钮事件运行控制台应用程序中的Program.cs代码?

我的代码的密码:

    using System;
using System.Net.Sockets;
using System.IO;
public class Program
{

    public static string name = null;
    public static string userloc = null;
    public static string protocol = null;

    public static int Portal = 43;
    public static string Address = "whois.net.dcs.hull.ac.uk";

    static void Main(string[] args)
    {


        for (int i = 0; i < args.Length; i++)
        {
            switch (args[i])
            {
                case "-h0":
                    protocol = "-h0";
                    break;

                case "-h1":
                    protocol = "-h1";
                    break;

                case "-p":
                    Portal = int.Parse(args[i + 1]);
                    ++i;
                    break;

表单代码:

namespace location
{
    public partial class Location : Form
    {
        public Location()
        {
            InitializeComponent();
        }

        private void updateBtn_Click(object sender, EventArgs e)
        {

        }
    }
}

1 个答案:

答案 0 :(得分:0)

您最需要的是How do I convert a .NET console application to a Winforms or WPF application

然后,您在注释中询问“如何让表单上的按钮运行Main()代码?”。我假设您知道单击updateBtn_Click时将执行updateBtn方法,并且假定这是您称为“我的表单上的按钮”的按钮。

答案是您不想让按钮单击呼叫Program.Main,因为那是应用程序的入口点。

我还假设您想保留命令行参数,因此需要将args的处理保留在Program.Main中。

无论其余功能是什么,您都可以将其直接移到表单中,移至updateBtn_Click方法中。可能需要对代码进行调整,以便从那里获取命令行参数的值,因为它们的名称都是静态的(例如Program.),因此在名称前加上Program.Portal

现在可能会满足您的要求。随着时间的流逝,您将意识到将代码塞入“后面的代码”(这是我刚刚告诉您要做的)并不是一个好主意。如果您重构代码,则可以从命令行,WinForm应用程序或WPF或Web应用程序使用功能。但是也许现在就足够了……