2010-11-01 5 views
4

Mon projet est un client de console. Je commence dans la console et ensuite affiche le formulaire. J'utilise le code ci-dessous pour afficher un formulaire vierge (j'ajouterai des contrôles plus tard) à l'utilisateur. Mais le formulaire est affiché, mais il est bloqué (pas actif). Que devrais-je faire?Démarrage d'un formulaire dans un projet de console C#?

Console.WriteLine("Starting form"); 
Console_Client.Main mainform = new Main(); 
mainform.Show(); 
Console.ReadLine(); 

Répondre

9

Essayez ShowDialog().

Le problème est que vous n'exécutez pas de boucle de message. Il y a deux façons de commencer un. ShowDialog() a un intégré de sorte que cela fonctionnera. L'alternative consiste à utiliser Application.Run(), après l'appel Show() ou avec le formulaire en tant que paramètre.

  1. ShowDialog():

    mainform.ShowDialog(); 
    
  2. Application.Run() sans forme:

    mainform.Show(); 
    Application.Run(); 
    
  3. Application.Run() avec la forme:

    Application.Run(mainform); 
    

Tout cela fonctionne.

+2

ShowDialog() fonctionnera dans certains cas, mais, sans une pompe réelle de message, certaines fonctionnalités de formulaires ne pas se comporter comme vous l'auriez prévu. Si le formulaire est très simple, c'est très bien ... –

+0

L'utilisation de 'ShowDialog()' fonctionne de la même façon que lorsque vous ouvrez un formulaire de connexion dans 'Main' avant le' Application.Run() '. Oui, pour les formulaires simples, cela fonctionne très bien. –

5

Vous devez lancer une application complète, tout comme une application Windows Forms fait normalement:

Console.WriteLine("Starting form"); 
Console_Client.Main mainform = new Main(); 

// This will start the message loop, and show the mainform... 
Application.Run(mainform); 

// This won't occur until the form is closed, so is likely no longer required. 
// Console.ReadLine(); 
+1

en utilisant System.Windows.Forms; est également nécessaire – vishnu

+0

@vishnu: True, ou doit être pleinement qualifié. –

Questions connexes