MGD Software
Messages postés188Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 4 juillet 2024
-
4 sept. 2018 à 14:11
pascal16m
Messages postés73Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention12 novembre 2020
-
5 sept. 2018 à 21:33
Bonjour,
Je développe une application de bureau (Windows Forms) comprenant des calculs très complexes, et je sors beaucoup de résultats intermédiaires dans le panneau "Sortie" avec l'instruction Console.WriteLine().
Pour que la lecture soit claire, je dois effacer manuellement le panneau Sortie avant chaque lancement du calcul. J'aimerais pouvoir disposer d'une procédure qui effectue ce travail, que j'appellerais au début de chaque calcul.
Tout ce que j'ai trouvé sur le net (beaucoup d'articles pourtant) ne concerne que les applications console.
Tenter d'utiliser l'instruction Console.Clear() provoque une exception :
System.IO.IOException : 'Descripteur non valide'
Quelqu'un pourrait-il m'indiquer si c'est possible et comment faire?
Pour vous éviter de naviguer, voici le code de la fonction :
/// <summary>
/// Clear the Output window-pane of Visual Studio.
/// Note: Causes a 1-second delay.
/// </summary>
public static void ClearOutputWindow()
{
if (!Debugger.IsAttached)
{
return;
}
//Application.DoEvents(); // This is for Windows.Forms.
// This delay to get it to work. Unsure why. See http://stackoverflow.com/questions/2391473/can-the-visual-studio-debug-output-window-be-programatically-cleared
Thread.Sleep(1000);
// In VS2008 use EnvDTE80.DTE2
EnvDTE.DTE ide = (EnvDTE.DTE)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
if (ide != null)
{
ide.ExecuteCommand("Edit.ClearOutputWindow", "");
Marshal.ReleaseComObject(ide);
}
}
Personnellement, j'ai décommenté le DoEvents mais supprimé le sleep (donc plus besoin du using System.Threading). Ça marche bien.
Il faut penser à ajouter la référence à EnvDTE, et déclarer le using System.Runtime.InteropServices
pascal16m
Messages postés73Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention12 novembre 2020 5 sept. 2018 à 21:25
Wello,
j'ai essayé de reproduire l'erreur et je l'ai eu aussi.
Dans les options du projet, sortie=console et ça marche sans erreur.
Sinon, je pense qu'il est possible de "récupérer" un pointeur vers la console pour faire un .Clear sur un pointeur vers la console.