Bonjour, j'ai une application qui affiche un report, au moment de la géneration je veux afficher un message pour bloquer l'utilisateur de faire une autre operation jusqu'a la finition du rapprt, comment puis je faire ?
Version imprimable
Bonjour, j'ai une application qui affiche un report, au moment de la géneration je veux afficher un message pour bloquer l'utilisateur de faire une autre operation jusqu'a la finition du rapprt, comment puis je faire ?
Bonjour Msysteme,
Si j'ai bien compris ton problème ce que je te recommande c'est d'exécuter la génération de ton report dans un thread à part de celui de ton UI, pour cela tu peux utiliser le BackgroundWorker prévu à cet effet et très simple d'utilisation. En plus tu devrais afficher une progressBar sur ton UI indiquant l'avancement, ainsi tes utilisateurs sauront combien ils doivent encore attendre.
Pour eviter l'utilisateur d'effectuer une autre opértion bien tu peux desactiver les controles (permettant d'effectuer d'autres opérations) de ton formulaire durant la génération du report. Si jamais tu as trop de contrôles à désactiver ou que cela ne convient pas à ton appli, tu peux aussi afficher une fenêtre modale pendant la génération de ton report, en la paramétrant correctement l'utilisateur n'aura alors pas d'autre choix que d'attendre la fin du report.
Il y d'autres manières de procéder, après tout dépend de ce que tu as réllement besoin de bloquer durant la génération du report.
Cordialement,
Ronald
je crois que l'idée de :
est bonne, mais comment puis je la faire ?Code:fficher une fenêtre modale pendant la génération de ton report, en la paramétrant correctement l'utilisateur n'aura alors pas d'autre choix que d'attendre la fin du report.
Voici un morceau de code tout droit issu de la doc MSDN qui devrait pas mal t'aider :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public void ShowMyDialogBox() { Form2 testDialog = new Form2(); // Show testDialog as a modal dialog and determine if DialogResult = OK. if (testDialog.ShowDialog(this) == DialogResult.OK) { // Read the contents of testDialog's TextBox. this.txtResult.Text = testDialog.TextBox1.Text; } else { this.txtResult.Text = "Cancelled"; } testDialog.Dispose(); }
En clair tant que ta fenetre n'aura pas retourné de DialogResult alors ta fenetre restera ouverte par dessus l'autre. A toi de faire en sorte de desactiver les bouton, la petit croix et autres pour que l'utilisateur ne puisse pas fermer cette fenetre tant que ton report n'est pas terminé.
C'est tout expliqué ici:
http://msdn.microsoft.com/fr-fr/library/c7ykbedk.aspx
Bonne lecture,
Ronald
Donc j'appelle cette méthode au moment de la génération du report ?