Redémarrer un programme d'application bureau C# sans fermer la fenêtre [Résolu]

Signaler
Messages postés
65
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
-
Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021
-
Bonjour,

J'aimerais savoir comment je peux recommencer un programme bureau C# depuis le début sans fermer la fenêtre.

7 réponses

Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021
708
C'est à dire?
  • sans cliquer sur la "croix", mais la fenêtre peut s'éteindre et se redémarrer?
  • la fenêtre n'est jamais éteinte et les données et algo sont remis à zéro?
  • autre?

Messages postés
65
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021

En fait ce que je voudrais c'est que dans mon programme il y ait un bouton et que lorsque je clique dessus il revient comme il était au début, donc comme avant que l'utilisateur interagisse avec le programme.
Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021
708
Je comprends donc que la fenêtre peut s'éteindre et redémarrer.
Dans ce cas, dans le constructeur de la form, tu fais une recherche sur les processus actuels, dont le nom correspond à ton programme.
S'il y en à plus qu'un tu tues les plus anciens, pour ne conserver que le plus récent.

Ceci sert à n'avoir qu'une seule instance de ton programme et cette instance est la dernière lancée.


Dans le code de ton bouton, tu lances une nouvelle instance de ton programme.

Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021
708
Le code pour tuer mon programme de test qui s'appelle "Test Winform"
        public Form1()
        {
            Process[] ps = Process.GetProcessesByName("Test Winform");
            for (int i = 0; i < ps.Length - 1; i++)//le plus récent est le dernier du tableau
                ps[i].Kill();


            InitializeComponent();
            //etc




Attention, tu ne peux pas l'essayer avec Visual Studio, en effet quand on exécute un code depuis VS, le processus est hébergé par VS, du coup si tu lances une fois l'exe, puis VS il n'y a qu'un processus avec le nom du projet.

Et le code pour lancer une nouvelle application
            Process.Start("Test Winform.exe");
Messages postés
65
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
>
Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021

En fait je ne veux pas que la fenêtre ce ferme, je veux seulement un code pour que mon programme recommence depuis le début sans fermer la fenêtre
Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021
708
Dans ce cas là, quand je te demande si la fenêtre peut se refermer, tu dis non.....

Si on te demande de détailler et on te pose des questions précises c'est que ta demande n'est pas claire.

Et comme à des questions précises, tu réponds encore vaguement, et ben j'ai supposé, qu'aux 2 questions c'est oui....



A part l'appel à InitialiseCompomnent, as tu du code dans le constructeur?
As tu du code dans le load?
As tu du code dans le shown?
As tu des binding?
L'utilisateur peut il saisir des données? Agir sur des contrôles?
Messages postés
65
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021

En fait mon programme est une application de bureau en C#, il consiste à aller chercher des donner dans un fichier Excel et il les exporte dans des comboBox. Mais lorsque l’utilisateur interagit d’une certaine manière avec le programme, ce dernier m’affiche une erreur, et je suis désolé pour mes réponses, merci de m’avoir averti, dorénavant je vais plus développé. Donc recommençons du début, quelle sont tes questions pour m’aider
Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021
708 >
Messages postés
65
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021

Elles sont dans le message
Messages postés
65
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
>
Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021

Oui, j'ai d'autre code dans le constructeur, aussi, je ne sais pas ce qu'est le load, le shown et le binding. Finalement, oui, l'utilisateur peut agir sur les contrôles, il peut sélectionner les valeurs dans les comboBox. Mais à part les comboBox, l'utilisateur ne peut saisir aucune autre donnée.
Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021
708
Mais lorsque l’utilisateur interagit d’une certaine manière avec le programme, ce dernier m’affiche une erreur,

Ne serait pas plus judicieux de chercher la raison de cette erreur et de faire en sorte
  • soit de la corriger?
  • soit d'empêcher qu'elle se produise?


Mais si tu veux tout réinitialiser:
  • tout ce qui est dans le constructeur, sauf l'appel à InitialiseCompoment doit être mis dans un méthode. Pour simplifier la suite, je vais l'appeler
    private void Init() 
  • Dans le constructeur, tu appelles InitialiseComponment puis Init().
  • Dans ton bouton,
    • s'il y a un lien de données entre tes combobox et le fichier excel, tu le casses
    • s'il n'y a pas de lien, tu vides les combobox
    • si les interactions avec les combox ont une influence sur d'autres controles, tu remets ces controles dans leur état d'origine
    • tu appelles Init

Messages postés
65
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021

Merci beaucoup de ton aide, sa marche!!!
Messages postés
16024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juin 2021
708
De rien