2012-12-22 7 views
0

Je travaille dans le projet SCSF et j'ajouté plusieurs vues en TabWorkSpace en utilisant le code suivant:Comment supprimer une partie intelligente de la collection Items après l'avoir fermée?

ControlledWorkItem<MyController> controller; 
       controller = WorkItem.Items.AddNew<ControlledWorkItem<MyController>>(); 
       controller.Controller.Run(WorkItem.Workspaces[WorkspaceNames.RightWorkspace]); 
       controller.Activate(); 

et j'ai un bouton lorsque je clique dessus fermera tous les onglets ouverts en utilisant le code suivant:

foreach (var item in WorkItem.RootWorkItem.Workspaces[WorkspaceNames.RightWorkspace].SmartParts) 
{ 
    itemToclose = (UserControl)item; 
    if (itemToclose.InvokeRequired) 
    { 
     itemToclose.Invoke(new MethodInvoker(delegate 
     { 
      WorkItem.RootWorkItem.Workspaces[WorkspaceNames.RightWorkspace].Close(itemToclose); 
     })); 
    } 
} 

Après avoir cliqué sur le bouton, toutes les pièces intelligentes se fermeront mais seront toujours présentes dans la collection Articles.
Comment supprimer ces smartparts dans la collection d'articles?

Répondre

0

La solution la plus simple basée sur le code que vous avez présenté serait d'ajouter un WorkItem.RootWorkItem.Items.Remove (itemToClose) dans votre délégué. Une chose à noter est que votre classe Presenter de base (si vous utilisez le guidage SCSF pour créer vos modules) contient une méthode Dispose qui supprime la vue associée de la collection Items de l'élément de travail.

La façon dont je l'ai installé est que lorsque tous les espaces de travail qui appartiennent à un poste de travail spécifique sont fermés, j'appelle le Workitem.Dispose qui assure que tous les SmartParts sont retirés de la collection.

Espérons que cela aide!

Questions connexes