2010-12-14 19 views
3

J'ai besoin de l'utilisateur pour sélectionner un fichier à ouvrir avant de pouvoir utiliser le formulaire principal dans le programme que j'écris. J'ai écrit ce qui suit dans le gestionnaire d'événements de charge de la forme:Windows Forms formulaire s'ouvre en arrière-plan si j'ouvre un OpenFileDialog dans son événement Load

private void MainForm_Load(object sender, EventArgs e) 
{ 
    if (openXmlFileDialog.ShowDialog() != DialogResult.OK) 
     Application.Exit(); 

    fileName = openXmlFileDialog.FileName; 
    Activate(); 
} 

Après cela, MainForm apparaît en arrière-plan, en dépit de l'appel Activer() sur elle.

Un autre problème est que si l'utilisateur appuie sur Annuler et qu'Application.Exit() est appelée, cela n'a aucun effet.

Répondre

3

Placer le code dans l'événement Shown à la place.

+0

Merci! Cela a résolu les deux problèmes! – neo2862

1

Faites ceci en Program.cs

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    OpenFileDialog o = new OpenFileDialog(); 
    if (DialogResult.OK == o.ShowDialog()) 
    { 
     Application.Run(new Form1(o.FileName)); 
    } 
    else 
    { 
     Application.Exit(); 
    } 
} 

Dans Form1.cs

string filename; 
public Form1(string filename) 
{ 
    this.filename=filename; 
    InitializeComponent(); 
}