2009-07-28 4 views
3

Je souhaite afficher un "wait cursor" à l'utilisateur lorsqu'il doit attendre que quelque chose se charge. Le curseur doit être une série animée de bitmaps..NET Compact Framework 3.5 curseur d'attente transparent animé

Je peux utiliser un UserControl que je peux ajouter à un formulaire, mais UserControl n'est pas lui-même transparent.

J'ai pris l'exemple de code disponible ici (http://www.microsoft.com/downloads/details.aspx?FamilyId=33817CE0-B5E9-4B8E-916B-E6A381E03789&displaylang=en). Tant que cela fonctionne, je veux pouvoir découpler l'animation du formulaire dans un objet séparé. Lorsque je fais cela, cela fonctionne pour l'application exemple, mais pas pour mon application réelle.

Des suggestions? C'est dans .NET CF 3.5

Répondre

2

Ce que vous essayez d'accomplir est en fait assez difficile parce que Windows CE ne supporte pas les fenêtres transparentes. Vous pouvez utiliser la transparence Colorkey pour dessiner une image avec transparence sur une fenêtre, mais si cette fenêtre chevauche une autre fenêtre (comme c'est le cas dans un UserControl au-dessus d'un formulaire), vous obtiendrez soit un arrière-plan gris, soit un " trou "tout le chemin vers le bureau, selon que vous avez remplacé OnPaintBackground dans le UserControl.

Ce que vous devez faire pour que cela fonctionne est le UserControl doit appeler réellement à son parent et appeler il est méthode OnPaint avec les limites de votre zone de découpage avant dessiner le UserControl lui-même. Malheureusement, je n'ai pas d'exemple de code simple pour cela parce que là où nous l'utilisons, nous l'avons très étroitement couplé au framework d'interface utilisateur du projet via une base et une interface implémentées dans un IoC Workspace. Cela me prendrait quelques heures juste pour le distiller à un exemple simple (que j'ai l'intention de faire pour un billet de blog un jour, mais pas aujourd'hui).

+0

Je pense que c'est la coupure que je ne fais pas. J'ai une version qui fonctionne avec un contrôle utilisateur sans transparence. J'ai un second qui ne fonctionne pas du tout dans mon application (fonctionne dans l'exemple MSDN) où je crée un graphique à partir d'une référence de formulaire, puis j'utilise graphics.DrawImage(). C'est probablement à faire avec OnPaint ... – chocojosh

2

Il y a quelque chose d'équivalent dans les FC natif sans aucune bibliothèque tierce:

Cursor.Current = Cursors.WaitCursor; // Show the "Loading" image in the middle of the screen 

Pour masquer:

Cursor.Current = Cursors.Default; 
Questions connexes