Консольное приложение C # как форма Windows - PullRequest
0 голосов
/ 06 июля 2018

Я начал проект как консольное приложение в визуальных студиях, и теперь я обнаружил, что мне нужен пользовательский интерфейс (форма), но когда я запускаю программу, она вызывает консоль. В любом случае мой код 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 голосов
/ 06 июля 2018

Большая часть того, что вам нужно, находится на Как преобразовать консольное приложение .NET в приложение Winforms или WPF .

Затем вы спросили в комментариях "как я могу, чтобы моя кнопка в моей форме запускала код Main ()?". Я предполагаю, что вы знаете, что метод updateBtn_Click будет выполнен при нажатии updateBtn, и я предполагаю, что это кнопка, которую вы называете "моей кнопкой в ​​моей форме".

Ответ заключается в том, что вы не хотели бы, чтобы нажатие кнопки вызывало Program.Main, поскольку это точка входа для приложения.

Я также предполагаю, что вы хотите сохранить параметры командной строки, поэтому вам нужно оставить обработку args в Program.Main.

Какими бы ни были остальные функции, вы можете переместить их прямо в форму, в метод updateBtn_Click. Возможно, потребуется изменить код, чтобы получить оттуда значения параметров командной строки, добавив к их именам префикс Program., поскольку все они статические (например, Program.Portal).

Возможно, это пока удовлетворит ваши требования. Со временем вы поймете, что встраивание кода в «код позади» (это то, что я только что сказал вам делать) не очень хорошая идея. Если вы реорганизуете свой код, то вы сможете использовать свои функциональные возможности из командной строки, или приложения WinForm, или, возможно, WPF или веб-приложения. Но, может быть, пока это достаточно хорошо ...

...