2010-02-24 3 views
1

Je crée ma première application Windows Forms à déployer sur Windows Mobile et j'ai de la difficulté à concevoir une interface à onglets.Quelle est la manière standard d'ajouter des contrôles à un TabPage au moment du design?

J'avais supposé que je pourrais créer un TabControl, puis ajouter des TabPages, puis faire glisser les contrôles sur chaque page d'onglet à tour de rôle. Cela ne semble pas possible et la plupart des informations que je vois sur le web semblent suggérer que les contrôles devraient être ajoutés dynamiquement au moment de l'exécution. Est-ce que je manque quelque chose d'évident ici ou est-ce que c'est correct?

Si vous devez ajouter les contrôles au moment de l'exécution, comment les gens gèrent-ils généralement le processus de conception? Créent-ils un UserControl personnalisé pour chaque onglet, puis l'ajoutent lors de l'exécution?

environnement Design (C# Visual Studio 2005, .NET 2.0) Runtime Environment (Windows Mobile 6.1)

Update 1

Les étapes réelles prises dans le studio visuel sont les suivantes: -

  1. Sélectionnez Nouveau projet -> SmartDevice -> Windows Mobile 6 Professionnel -> Application de périphérique
  2. Ajout d'un TabControl à F orm1. Cela ajoute automatiquement TabPage1 et TabPage2

Mise à jour 2

La solution est honteusement noobish. Le TabControl place les onglets au bas de la page, la première chose que je faisais était de redimensionner le contrôle de tabulation sur une seule ligne qui masquait alors le contrôle TabPage.

+0

Steve Weet: Pouvez-vous nous donner une capture d'écran du concepteur? – Jonathan

Répondre

2

Actuellement, je n'utilise pas Windows Mobile, mais je pense que cela fonctionne tout à fait la même chose.

Après avoir ajouté un TabControl à votre formulaire, vous devriez jeter un oeil dans les propriétés et rechercher TabPages. Ici vous pouvez ajouter et supprimer de nouveaux TabPages à votre Contrôle et le concevoir comme vous voulez dans le concepteur.

Pour votre question sur l'utilisation de UserControls sur chaque TabPage je dirais certainement Oui. Cela facilite la séparation entre chaque page et ce qui va se passer sur chacune d'entre elles.

Toujours à la dernière étape je vais déplacer le code nécessaire de Designer.cs dans ma propre fonction (par exemple var tabControl = CreateTabControl() où toutes mes propriétés sont définies.Alors je mets tout mon UserControls dans un

private IEnumerable<Type> GetAllTypes() 
{ 
    yield return typeof(MyFirstControl); 
    yield return typeof(MySecondControl); 
} 

et faire une

private void CreateTabPages(TabControl tabControl, IEnumerable<Type> types) 
{ 
    foreach(var type in types) 
    { 
     var control = Activator.CreateInstance(type); 
     var tabPage = new TabPage(); 
     tabPage.Controls.Add(control); 
     tabControl.TabPages.Add(tabPage); 
    } 
} 

ce sera alors appelé par

CreateTabPages(tabControl, GetAllTypes()); 

Avec cette approche, je peux facilement ajouter une autre page de l'onglet avec ligne unique de code et le concevoir dans son propre champ d'application.

1

Je viens d'ouvrir vs2008 et créé un tabcontrol, puis j'ai ajouté des contrôles à l'intérieur en utilisant le glisser-déposer dans le concepteur et je n'ai trouvé aucun problème.

La façon dont j'utilise pour le faire est de créer un usercontrol pour chaque onglet, mais j'ajoute le contrôle usercontrol à l'onglet dans le concepteur. (Notez que la commande usercontrol n'apparaîtra pas dans la boîte à outils tant que vous n'aurez pas généré votre solution).

Je ne savais pas pourquoi votre méthode ne fonctionne pas. Avez-vous arrêté votre application avant d'essayer d'ajouter les contrôles?

Bonne chance.

+0

Avez-vous utilisé un projet Windows Mobile? – leppie

+0

Cela a été créé en tant que projet Windows Mobile. Le problème que j'ai est que je n'ai pas de zone visible sur laquelle laisser passer les contrôles. –

+0

leppie: Je l'ai fait avec un projet "Smart Device". – Jonathan

Questions connexes