Je travaille dans Visual Studio 2008 et je souhaite que l'option Edition> Contour> Réduire dans les définitions soit exécutée à chaque fois que j'ouvre un fichier. Ce serait bien si, après cela, toutes les régions étaient élargies. J'ai essayé le code que Kyralessa a offert dans un commentaire sur The Problem with Code Folding, et cela fonctionne très bien comme une macro que je dois exécuter manuellement. J'ai essayé de développer cette macro pour agir comme un événement en plaçant le code suivant dans le module EnvironmentEvents dans l'IDE Macro:La macro EnvironmentEvent ne se termine pas
Public Sub documentEvents_DocumentOpened(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentOpened
Document.DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
DTE.SuppressUI = True
Dim objSelection As TextSelection = DTE.ActiveDocument.Selection
objSelection.StartOfDocument()
Do While objSelection.FindText("#region", vsFindOptions.vsFindOptionsMatchInHiddenText)
Loop
objSelection.StartOfDocument()
DTE.SuppressUI = False
End Sub
Cependant, cela ne semble pas faire quoi que ce soit quand j'ouvrir un fichier de ma solution dans CONTRE. Pour tester que la macro était en cours d'exécution, j'ai mis une instruction MsgBox()
dans ce sous-programme et j'ai remarqué que le code avant Document.DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
fonctionnait bien, mais rien ne semblait être touché après cette ligne. Lorsque je déboguais et définissais un point d'arrêt dans le sous-programme, j'appuyais sur F10 pour continuer à la ligne suivante et le contrôle quittait le sous-programme dès que la ligne ExecuteCommand
était exécutée. Malgré cela, cette ligne semble ne rien faire, c'est-à-dire qu'elle ne s'effondre pas.
J'ai également essayé d'utiliser juste DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
dans le sous-programme, mais sans chance.
Cette question essaie d'obtenir le même résultat final que this one, mais je demande ce que je peux faire de mal dans ma macro de gestion d'événements.
Merde, ça marche! J'ai dû ajouter une ligne 'Imports System.Threading' dans ma macro EnvironmentEvents pour' Timer' et 'Timeout', mais ça marche! J'ouvre mes fichiers CS maintenant et, après environ une seconde, toutes mes définitions sont effondrées. Merci! –
J'ai remarqué que lorsque j'ouvre une nouvelle solution et qu'elle se souvient des fichiers que j'avais ouverts la dernière fois, la macro IDE doit fermer à cause d'une erreur. –
Oui, j'ai aussi l'erreur. J'ai essayé de résoudre le problème mais je n'ai pas trouvé de solution et j'ai déjà passé trop de temps dessus. Si je pense à autre chose, je l'afficherai. En attendant, vous pouvez simplement utiliser un booléen (défini sur false dans l'événement Solution_Opened) pour activer/désactiver la fonction et la lier à un raccourci clavier. –