Win form

delewrocks Messages postés 9 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 22 mars 2007 - 28 déc. 2006 à 13:16
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 - 29 déc. 2006 à 10:49
Bonjour à tous,

J'ai un petit problème, j'ouvre une form en c# avec un constructeur de mon objet form, j'effectue un traitement sur une base de donnée +- long avec un affichage des oppérations effectuée et à la fin de mon contructeur je voudrais fermer la fenêtre mais celà ne fonctionne pas !!! Comment puis-je faire ?

Merci.

10 réponses

t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
28 déc. 2006 à 13:21
Je ne suis pas sur d'avoir tout bien suivi, le traitement sur la bdd est effecté dans le constructeur de la form?
Quand tu dis cela ne fonctionne pas, c'est la fermeture ou le tritement sur la bdd? As tu une exception?
0
delewrocks Messages postés 9 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 22 mars 2007
28 déc. 2006 à 13:35
Mon problème est que je n'arrive pas à fermer la form a la fin du constructeur de celle si ce qui est logique, mais je voudrais savoir comment faire, tous ce qui est traitement fonctionne impect avec exception et tout et tout mais c'est au niverzau de la fermeture de ma form ke j'ai un probleme, elle doit etre fermée automatiquement à la fin de tout le traitement c'est une application qui est exécutée par un scheduler. Donc elle affiche les traitement et puis se ferme quoi qu'il arrive.
0
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
28 déc. 2006 à 13:39
Est ce que tu aurais un petit bout de code simplifié?
0
delewrocks Messages postés 9 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 22 mars 2007
28 déc. 2006 à 14:06
Voici un petit bout de code de ma form mais c'est du classique et le traitement lui n'est pas mis en cause.

namespace Rank_Calculator
{
    public partial class RankCalculator : Form
    {
        public RankCalculator()
        {
            InitializeComponent();            
            Calcul_Rank();               //traitement dans la db ki fonctionne parfaitement.
            this.Close();                  //ne fonctionne pas c'est un truc comme ca ke je voudrais faire.
        }

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
28 déc. 2006 à 14:16
A mon avis, il vaudrait mieux que tu découpes ton code, en mettant Calcul_Rank dans l'évenement OnLoad ou OnActivate, après le traitement tu appelles this.Close
En voyant ton code, je me demande comment tu peux afficher tes opérations
0
delewrocks Messages postés 9 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 22 mars 2007
28 déc. 2006 à 14:25
j'ai une text box dans la form et je lui ajoute des string et cela dans calcul rank, donc calcul rank enmploi un objet textbox de la form, je ne peut pas donc pas sortir Calcul_Rank()
0
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
28 déc. 2006 à 14:32
Pour moi, rien n'empêche de mettre Calcul_Rank dans un évenement de ta form

namespace Rank_Calculator
{
    public partial class RankCalculator : Form
    {
        public RankCalculator()
        {
            InitializeComponent();           
        }

       protected override OnLoad(object sender, EventArgs e)
       {
              Calcul_Rank();

               this.Close();//ok c'est pas propre mais ça devrait meiux marcher
        }
    }
}
0
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
28 déc. 2006 à 14:36
Sinon le mieux serait de tout découpler, d'un côté ta form avec une textbox, de l'autre une thtread éxécutant Calcul_Rank déclenchant deux types d'évenements pour actualiser (ne pas oublier d'utiliser Invoke) et fermer la fenêtre.

Donc tu aurais dans ta form,
Sur le OnLoad : l'exécution de Calcul_Rank
Sur l'evènement Actualiser : l'ajout de string dans ta textbox avec Invoke
Sur l'evènement Fermer : la fermeture de ta form
0
delewrocks Messages postés 9 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 22 mars 2007
28 déc. 2006 à 15:05
Avec onload ca fonctionne mais ma form n'est pas visible et ta 2eme proposition je n'ai pas trop capté.
0
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
29 déc. 2006 à 10:49
Euh, j'étais pas très en forme hier : si ton traitement est long ou gourmand le placer dans le OnLoad va ralentir voir mettre en pause l'affichage de la form, il faut donc plutôt utiliser l'évènement OnActivate.
La seconde solution consiste à avoir deux threads, une pour l'ihm et une autre pour les calculs. La thread de calculs se contente de faire ton traitement sur la bdd et met à disposition (via un évènement) des informations pour l'actualisation. Comme ça l'IHM et les calculs ne sont pas liés, l'actualisation étant faite via la réception d'evènement.
0
Rejoignez-nous