2010-05-04 8 views
0

Camarades,Création d'une nouvelle instance de la fenêtre par chaîne Type

J'ai une application WindowForm et contient plusieurs formulaires, chacun avec un nom spécifique. Eh bien, je voulais développer une classe qui gère la création de ces fenêtres, où, grâce au paramètre type d'écran (son nom), le système en crée un pour moi ...

Je pense à la propriété " AcessibleName "dans le MenuItem, mettez le nom de la classe que je veux. Puis cliquez sur chaque élément, le système effectue la vérification suivante

private void mnMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
    { 
     try 
     { 
      if (!String.IsNullOrEmpty(((MenuStrip)sender).AccessibleName)) 
      { 
       string[] _Parametros = ((MenuStrip)sender).AccessibleName.Split(uConstantes.CtSeparadorMenu); 
       uMenu.CreateWindow(((MenuStrip)sender).AccessibleName, _Parametros); 
      } 
     } 
     catch (uException __Excp) 
     { 
      throw __Excp; 
     } 
    } 

uMenu.CreateWindow et dans la classe, je recevrais les paramètres et instancier un nouvel objet, et l'afficher. Est-ce que quelqu'un a une idée? La réflexion résout ce problème? (Malheureusement, je ne sais pas grand-chose à propos de la réflexion)

Merci

Répondre

2

je regardais la méthode Activator.CreateInstance pour faire précisément ce que vous demandez.

Cependant, je suis enclin à demander si c'est même nécessaire (d'après les informations que vous avez fournies). Disons que vous avez un menu qui contient 3 éléments. Lorsque l'utilisateur clique sur MenuItem1, ils sont présentés avec Form1. De même, MenuItem2-> Form2 et MenuItem3-> Form3. Pourquoi ne pas simplement lancer les formulaires directement? Quel avantage cela vous procure-t-il?

+0

Camarade, Cette règle ne s'appliquera pas à tout le monde, et d'après mes règles de programmation, habituellement mettre des noms spécifiques et ont tendance à varier dans les cas. Répondu à ta question? Je vais essayer d'implémenter cette solution. Merci –

+0

@ Ph.E: Je suppose que ma question était plus dans le sens de, est-il toujours le cas en cliquant sur MenuItem1 devra afficher Form1? Si oui, pourquoi ne pas simplement dire 'new Form1()' dans le gestionnaire de clic pour MenuItem1? –

+0

@Jacob G: Pourquoi existe-t-il un certain nombre de paramètres, qui seront transmis sous forme de tableau. Si j'utilise l'événement OnClick va polluer très le code, le laissant très segmenté. –

0

En fait, je faisais quelque chose de mal. J'ai besoin de mettre le nom de la fenêtre, y compris son chemin complet (espace de noms). Ensuite, la commande fonctionnera et le type sera identifié.

Merci à tous.

Questions connexes