2010-04-20 16 views
1

J'ai créé une application compilée avec .NET 3.5. et utilisé l'objet FolderBrowserDialog. Quand un bouton est pressé, j'exécute ce code:La boîte de dialogue de consultation des dossiers n'affiche pas les dossiers

FolderBrowserDialog fbd = new FolderBrowserDialog(); 
fbd.ShowDialog(); 

Une boîte de dialogue Dossier est affichée mais je ne vois aucun dossier. La seule chose que je vois sont les boutons OK & Annuler (et créer un nouveau bouton de dossier lorsque le ShowNewFolderButton properyty est défini sur true). Quand j'essaye exactement le même code sur une forme différente tout fonctionne bien.

Des idées?

Répondre

1

Vérifiez que le fil de votre boîte de dialogue est sur un STAThread. Ainsi, par exemple assurez-vous que votre méthode principale est marquée avec l'attribut [STAThread]:

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

Sinon, vous pouvez le faire (à partir du Contenu de la communauté sur FolderBrowserDialog Class).

/// <summary> 
/// Gets the folder in Sta Thread 
/// </summary> 
/// <returns>The path to the selected folder or (if nothing selected) the empty value</returns> 
private static string ChooseFolderHelper() 
{ 
    var result = new StringBuilder(); 
    var thread = new Thread(obj => 
    { 
     var builder = (StringBuilder)obj; 
     using (var dialog = new FolderBrowserDialog()) 
     { 
      dialog.Description = "Specify the directory"; 
      dialog.RootFolder = Environment.SpecialFolder.MyComputer; 
      if (dialog.ShowDialog() == DialogResult.OK) 
      { 
       builder.Append(dialog.SelectedPath); 
      } 
     } 
    }); 

    thread.SetApartmentState(ApartmentState.STA); 
    thread.Start(result); 

    while (thread.IsAlive) 
    { 
     Thread.Sleep(100); 
     } 

    return result.ToString(); 
} 
+0

Très utile. Je vous remercie! – chessofnerd