Consol application do Windows form Application

0

Mój pierwszy post na forum wiec witam wszystkich.

Mam pytanie odnośnie tego jak do istniejącego projektu w VS C# w formie Consol Application "dorobić" graficzny interfejs, oczywiście zmieniłem rodzaj aplikacji na Windows Form dodałem formularz wstawiłem jakiś tam element ale kompilacja nie odbywa się jak w przypadku projektu od początku tworzonego jako WF w sumie nic się nie dzieje projekt CA składa się z trzech klas które są między sobą powiązane tak że każda bez reszty jest bezużyteczna, co muszę dodać/zmienić aby kompilowało się to jak formularz tzn pojawiało się zaprojektowane okno aplikacji i na podstawie zdarzeń (kliknięć etc.) wykonywała się reszta kodu.

Aplikacja jest funkcjonalna aktualnie jednak chciałbym ja wzbogacić o interfejs graficzny.......

screen w załączniku.

Pozdrawiam Jakub

1

skopiuj zawartość program.cs ze świeżo utworzonej aplikacji windows forms do swojej aplikacji

0

Generalnie robiłem to na początku,
z tym, że żarł się z aktualnym Mainem w klasie program zmieniłem nazwy, nie mógł też wykryć obiektu Form1 ale po wskazaniu działa, nie wiedziałem w którą stronę, iść dzięki wielkie:D

Mam jeszcze jedno pytanie, w tym momęcie chciałem aby po kliknięciu przycisku na labelu odpalał się program w poprzedniej formie tj konsola, ze starego maina wywaliłem argument w postaci stringu i wywołuje normalnie jak metodę klasy po kliknięciu jednak nic się nie dzieje, można odpalać konsole w trakcie działania aplikacji WF??

0

Kopiujesz klasy z aplikacji konsolowej do WF i uruchamiasz co trzeba w zdarzeniach.
I nic nie da się powiedzieć czemu nie działa dopóki nie pokażesz kodu.

0

Kod mówisz no nie ma problemu, pod buttonem mam:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ConsoleApplication2;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Main.ProgramMain();
        }
    }
} 

odnosi się to do

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;
using ConsoleApplication2;

namespace ConsoleApplication2

{
    class Main
    {
        public static string i; //numer linijki
        public static string ToolPathType; // rodzaj ścieżki 3axis lub 5axis
        public static Int64 Compensation;// numer aktualnego offsetu narzędzia
        public static string LastFeedRate; // poprzedni posuw
        public static string FeedRate; // aktualny posuw
        public static double ActX;//  aktualna pozycja w X
        public static double ActY;//  aktualna pozycja w Y
        public static double ActZ;//  aktualna pozycja w Z
        public static string InterType; //typ interpolacji G0 G1 G2 G3
        public static double INTOL; //Tolerancja obróbki
        public static double OUTTOL; //Tolerancja obróbki

       public static void ProgramMain()
        {
            int i = 0;
            ArrayList AptArray = new ArrayList();
            ArrayList GArray = new ArrayList();
            ProceedFile ProceedFile = new ProceedFile();
            MajorWords MajorWord = new MajorWords(ProceedFile);
            AptArray = ProceedFile.AptToArray();// przeczytanie APT i wrzucenie go do tablicy AptArray za pomoca metody AptToArray
            string ActualLine;  //aktualna Linijka       
            string MW = string.Empty ; // slowo kluczowe(Major Word)
            for ( i = 0; i < AptArray.Count - 1; i++)// Pętla główna - odczyt kolejnych elementów tablicy AptArray  i przepisanie do tablica GArray
            {
              ActualLine = Convert.ToString(AptArray[i]); // przypisanie aktualnej linijki do zmiennej ActualLine, odczytywanie kolejnych znaków i porównanie z tablica slow kluczowych
              MW = ProceedFile.RecMWord(ActualLine, i); 
              Console.ReadLine();
            }

        }

    }
}

gdzie wcześniej jako argument metody ProgramMain było "string[] arg"s a metoda nie była publiczna - dołożyłem public gdyż wołało że nie ma dostępu z buttona(standardowe przy gołej CA)

Problem w tym że po kliknięciu buttona nic się nie dzieje

0

A co chcesz żeby się stało?

0

No odpaliła się konsola... pisałem w 3 poście:) - trzeba zmienić rodzaj aplikacji na ConsoleApplication w properties jednak wtedy uruchamia się WFA i CA od razu , jest sposób aby konsola wyskakiwała dopiero po kliknięciu buttona czyli jak wejdzie do metody to jak spotka Console.... to wtedy dopiero otworzy?? - chociaż nie jest to mi tak do szczęści potrzebne jak mam wszystko przerobić pod WFA, konsola potrzebna jest mi tylko do programowania.

dzięki za szybkie i niekiedy konkretne odpowiedzi:D

0

O dzięki coś czego szukałem:D

Chociaż spróbowałem i nie działa jak gość pisze....popatrze jutro

1

tak wygląda standardowa funkcja Main (o takiej dokładnie nazwie) programu okienkowego:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

STAThread ustawia "single-threaded apartment". Jakieś coś związane z mechanizmem COM co nie wiem dokładnie co robi, ale podobno jest wymagane przez WinForms.
EnableVisualStyles włącza „ładny” wygląd kontrolek w przeciwieństwie do tych z Win9x.
SetCompatibleTextRenderingDefault oznacza że tekst ma być renderowany przez bibliotekę GDI (false - lepiej) albo GDI+ (true - gorzej).
Run odpala pętlę komunikatów i trwa aż do zamknięcia głównego okna podanego jako parametr.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0