2012-11-13 2 views
0

Je suis nouveau à C# (commutation de Java) et je vais avoir un peu de GUI du mal à comprendre en C#clôture formulaire se

Ill coller juste le code que j'ai et nous qui expliquent la plupart.

Classe principale:

Frame frame; 
keepRunning = true; 

public GraphicsComponent() 
{ 
    frame = new Frame(); 
    frame.Show(); 
} 

public void run() 
{ 
    while (keepRunning) 
    { 
     Console.WriteLine("Running"); 
    } 
} 

public static void Main() 
{ 
    GraphicsComponent gameComponent = new GraphicsComponent(); 

    gameComponent.run(); 
} 

selon la méthode frame.Show(), il apparaît et disparaît pour un moment rapide. mais la boucle "en cours d'exécution" est exécutée. L'autre façon que j'ai vu est une autre méthode appelée ShowDialoge(), que l'on garde la fenêtre ouverte, mais bloque le reste du code de courir jusqu'à ce qu'il soit fermé.

La façon dont je veux l'utiliser est fondamentalement comment les interfaces graphiques fonctionnent en Java. Où je peux référencer un objet (et ses composants) comme nécessaire dans le reste de mon code.

Merci beaucoup!

Edit: Il y a beaucoup de confusion, alors voici ma classe Cadre:

public partial class Frame : Form 
{ 
    public Frame() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 
} 
+0

Avez-vous jeté un coup d'œil au concepteur de winforms? Habituellement, vous créez une classe (Form1 par exemple) qui hérite de System.Windows.Forms.Form et appelle Application.Run (new Form1()); dans votre méthode principale. – antonijn

+0

Ouais c'est une configuration bizarre ... Où est-ce que keepRunning est défini? – Alan

+0

Vous devriez probablement utiliser un formulaire. Un cadre n'est pas ce dont vous avez besoin et est WPF pas WinForms – Alan

Répondre

1

Une façon normale pour lancer une application WinForms est par Fichier-> nouveau projet WinForms. Lorsque vous faites cela, vous obtenez "Program.cs", qui contient votre méthode principale - le point d'entrée dans votre application. De là, vous avez du code comme ceci:

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

Dans cet exemple, je lancer une nouvelle « ConfigForm » » qui est une forme, et contient dans son cteur code qui ressemble à ceci:

public ConfigForm() 
    { 
     InitializeComponent(); 

     // Other init work here 

    } 

Je crée la forme par un clic droit dans le projet et l'ajout d'une nouvelle forme.

Vous pourriez vouloir regarder dans la méthode Application.Run, voir here. Vous pouvez spécifier un « formulaire principal » qui va être le principal forme qui court pendant la durée de l'application, et lorsqu'il est fermé met fin à l'application, ou vous pouvez spécifier d'autres options si vous le souhaitez. Peut-être que la solution la plus simple est de démarrer un formulaire principal, et puisque le formulaire est en ligne pendant la durée de l'application, vous pouvez lancer un autre code à long terme à l'intérieur de ce formulaire. Si c'est le code que vous voulez exécuter tout le temps en effectuant une sorte d'opération d'arrière-plan, vous pouvez le faire dans son propre thread. Cependant, l'enfilage est difficile, donc si vous êtes nouveau sur C#/.net, j'essayerais de rester à l'écart du threading à moins que vous n'en ayez besoin.

+0

Im en utilisant un formulaire, l'appel est simplement appelé Frame. et comment serais-je capable d'exécuter du code en dehors du formulaire? –

+0

Modifications ajoutées à la réponse –