Van console programma naar GUI

  • Onderwerp starter Onderwerp starter bram2
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

bram2

Gebruiker
Lid geworden
23 nov 2006
Berichten
80
Ik heb een console programma gemaakt waar ik nu een GUI bij wil integreren. Mijn eerste idee was om beide delen van het programma te splitsen omdat dit ten eerste overzichtelijker is en omdat ik dacht dat dit de makkelijkste manier was om mijn programma uit te breiden.


in Program.cs (hier zit ook de main):
Code:
//eerst wat initialisaties
GUI.Form1 myForm = new GUI.Form1();
Application.Run(myForm);
do{
Console.WriteLine("test");
           } while (myForm.ready() != true);
int parameter = myForm.getParameter;
//rest van programma dat parameter als input heeft

in Form1.cs: De GUI bevat een Combobox om parameter in te vullen en button om te bevestigen
Code:
using System.Text;
using System.Windows.Forms;

namespace GUI
{
    public partial class Form1 : Form 
    {
        private bool inputReady = false;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            inputReady = true;
           
        }

        public bool ready()
        {
            return inputReady;
        }

        public int getParameter()
        {
            return Convert.ToInt16(comboBox1.Text);
        }
    }
}

De rede waarom dit niet werk is dat de regel Application.Run(myForm); uitgevoerd blijft worden to de GUI gestopt wordt.

Nu is mijn vraag: Wat is de beste manier om dit type probleem op te lossen? Ik dacht oa aan werken met threads en/of eventhandlers.

Klopt mijn mening dat het goed is om GUI en eigelijke programma op te splitsen?
 
Zoiets?

PHP:
using System;
using System.Threading;
using System.Windows.Forms;

namespace Brian
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hij gaat starten");
            Thread t = new Thread(new ThreadStart(Hoi));
            t.Start();
            Console.WriteLine("Hij is klaar");
            Console.Read();
        }

        static void Hoi()
        {
            Form f = new Form();
            f.ShowDialog();
        }
    }
}

Of nét iets beter naar mijn mening:

PHP:
using System;
using System.Threading;
using System.Windows.Forms;

namespace Brian
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hij gaat starten");
            new Thread(new ThreadStart(Hoi)).Start();
            Console.WriteLine("Hij is klaar");
            Console.Read();
        }

        static void Hoi()
        {
            Application.Run(new Form());
        }
    }
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan