2009-08-04 12 views
0

Quel est le meilleur moyen d'accéder aux composants (par exemple, liste d'images, minuteur) à partir d'une instance de formulaire? Je travaille sur l'application de formulaires multi-fenêtres sur .NET Compact Framework version 3.5 SP1 avec C#. J'ai une classe Controller associée à chaque formulaire pour l'implémentation MVC. Voici mon exemple de classe Controller.Windows Form Components Access

public class Controller 
{ 
     public void Init(Form f) 
     { 
      //f.Controls will allow access to all controls 
      //How shall I access imagelist, timer on form f. 
     } 
} 

Ma question est de savoir comment puis-je accéder aux composants non visuels sans prendre un coup de réflexion? Les extraits de code sont les bienvenus. Si la réflexion est seulement un moyen, alors pouvez-vous me fournir un moyen optimal pour l'accès aux composants s'il vous plaît?

Merci,

Répondre

2

Vous devriez passer un mise en œuvre de forme ou d'une interface fortement typé qui soit expose les commandes directement (pas le choix préféré) ou de résumés des opérations sur le point de vue sur les méthodes/propriétés qui peuvent être appelés à partir de la contrôleur (le choix préféré).

0

Non, la réflexion n'est pas le chemin. En termes d'accomplir simplement ce que vous allez, vous pouvez exposer une propriété en lecture seule qui retourne le contrôle. Par exemple, supposons que vous avez un nom ImageListimageList1 sur votre formulaire:

public ImageList ImageList 
{ 
    get { return imageList1; } 
} 

Vous pouvez alors accéder à la propriété ImageList pour obtenir une référence à imageList1.

CEPENDANT

ce code est mauvais. Ce que vous devrait exposer est des propriétés et des fonctions qui se rapportent à ce que vous devez faire avec le ImageList. Votre code externe ne devrait pas se soucier de l'implémentation particulière sur votre formulaire (en d'autres termes, il devrait savoir que vous devez faire quelque chose avec des images et fournir des fonctions pour accomplir ces actions, il ne devrait pas savoir qu'il s'agit d'un contrôle).