2010-08-07 5 views
0

le détail de mon action est que j'ai une winform qui contient seulement la barre de progression que j'ai fait pour faire quelques calculs et stocké la valeur finale dans db.for this utilisé barre de progression et thread de backgroundworker. Je fais tous les calculs dans l'événement doWork de l'événement threadwork backgroundworker. Lorsque l'arrière-plan est terminé, il appelle l'événement RunWorkerCompleted, dans lequel j'essaie d'ouvrir un autre winform. Le problème est que winform ne devient pas visible.Winform ne s'affiche pas lorsque j'ai essayé d'ouvrir à partir d'un événement backgroundworker_RunWorkerCompleted?

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    if (!string.IsNullOrEmpty(click)) { 
     if (click == "sales") { 
      Sales sales = new Sales(); 
      sales.MdiParent = mdiStockApp.mdi; 
      sales.Show(); 
      sales.Activate(); 
     } 
    } 
} 

C'est l'événement RunWorkerCompleted dans lequel j'essaie d'ouvrir un autre événement. tout à l'heure j'ai essayé avec form.Activate() mais toujours non

+0

Pouvez-vous fournir un extrait de code montrant ce que vous avez essayé d'ouvrir l'autre formulaire? – kbrimington

+0

que private void backgroundWorker1_RunWorkerCompleted (expéditeur d'objet, RunWorkerCompletedEventArgs e) { if (! String.IsNullOrEmpty (clic)) { if (cliquez sur == "ventes") { Ventes Les ventes = Ventes(); sales.MdiParent = mdiStockApp.mdi; ventes.Show(); sales.Activate(); } } } il s'agit de l'événement RunWorkerCompleted dans lequel j'essaie d'ouvrir un autre événement. juste maintenant j'ai essayé avec form.Activate() aussi mais toujours pas – Nipun

+0

Est-ce que cela fonctionne si vous supprimez les instructions 'if()'? Est-ce que cela fonctionne avec une forme autre que "Ventes"? – Jay

Répondre

0

Il se peut que BackgroundWorker OnWorkCompleted lève l'exception cross-thread? Essayez la gestion de l'interface utilisateur dans un autre thread, vérifiez cette propriété .IsInvokeRequired et utilisez this.Invoke (...)

+0

j'ai essayé avec this.IsInvokeRequired qui me renvoie faux. – Nipun

+0

quand j'appelle sales.Show() et essaye de déboguer il ne va jamais au formulaire de vente. des raisons ??? – Nipun