2015-07-13 1 views
0

J'ai un problème de temps de conception lorsque j'hérite un UserControl dans la solution Smart Device (Windows CE) de Visual Studio 2008. Supposons que je une classe comme ceci:Le contrôle hérité dans la solution Smart Device (Windows CE) de Visual Studio 2008 ne fonctionne pas correctement

public class MyLabel:Label 
{ 
//Do nothing at all 
} 

Quand je mets MyLabel dans un formulaire, il ne portant pas de texte dans le temps de conception, mais à l'exécution, il fonctionne correctement. Donc, le problème est Visual Studio Label fonctionne correctement mais si j'en hérite, il n'affiche pas son texte en temps de conception.

J'ai lu des articles dans MSDN comme ce lien Creating and Migrating Smart Device Custom Controls by Using Visual Studio 2005 et d'autres sites Web sur la façon de concevoir un UserControl dans la solution Smart Device, mais il était trop parfait et avait beaucoup de code qui me confondait. Je veux juste MyLabel pour montrer son texte correctement dans la conception, je ne veux pas un UserControl parfait. Donc, si vous avez rencontré mon problème, partagez votre solution.

+1

Les contrôles simples (ou natifs) ne peuvent pas être correctement sous-classés dans CF. Question similaire https://social.msdn.microsoft.com/Forums/en-US/818a11ed-df23-4839-b7ef-5d035e7a441e/compact-framework-impossible-to-extend-simple-controls?forum=netfxcompact. "Le .NET Compact Framework lève les événements Paint et Resize uniquement pour les classes Form et Control.". Et voir https://whereabouts.eecs.umich.edu/whereabouts/trunk/Whereabouts.NET/LinkLabelCF/Design.doc. Je suppose qu'il est préférable d'utiliser un CustomControl qu'un contrôle Label sous-classé. – josef

Répondre

1

Ça marche pour moi. Est-il possible qu'il y ait plus de logique dans votre classe MyLabel que vous avez exclue pour la brièveté qui cause le problème?

Voici les étapes que je suivais:

  1. Créer une nouvelle C# projet Smart Device pour Windows Mobile 5 en utilisant Visual Studio 2008.
  2. Ajouter une nouvelle classe> MyLabel.
  3. Copiez/collez le code de votre question.
  4. Construire la solution.
  5. Faites glisser le contrôle MyLabel de la boîte à outils vers le formulaire.
  6. Modifier la propriété MyLabel.Text à "Hello, World!".
  7. Le texte montre "Bonjour, monde!" en mode conception et à l'exécution.

Parfois, vous devez ajouter un XMTA file pour aider le concepteur, mais je ne pense pas que ce soit l'un de ces cas.

Si vous essayez de faire votre propre dessin alors c'est quelque chose que vous aurez des problèmes avec comme mentionné par les réponses de commentaire à votre question.

+0

Oui, vous avez raison, j'ai créé une nouvelle solution et fait la même chose et ça marche, je ne sais toujours pas pourquoi cela se passe sur l'autre solution, mais qui s'en soucie: D –