2010-01-08 9 views
0

Je développe un petit C# programme -winforms, qui a une fonction qui permet aux utilisateurs d'ajouter des boutons et des différents contrôles à l'exécution.Conseils de mise en œuvre: Liaison d'un bouton (Cliquez sur l'événement) à une fonction et à un autre contrôle trop

Le scénario que je suis confronté est la suivante:

    1) L'utilisateur ajoute un bouton et définit ses propriétés (par une boîte de dialogue).
    2) L'utilisateur ajoute un autre contrôle (définit également ses propriétés).
    3) L'utilisateur choisit le bouton et choisit lier à partir d'un élément de menu.
    4) une nouvelle boîte de dialogue affichera un menu déroulant affiche tous les « autres contrôles », un autre DropDown montrera les fonctions (précodées), les utilisateurs doivent choisir 1 des contrôles et une fonction pour les lier au clic du bouton un événement.
    5) Lorsque l'utilisateur choisit de libérer sa conception, un fichier EXE sera généré qui aura le programme simple l'utilisateur conçu (penser encore cette étape plus)

Mon idée actuelle de mise en œuvre:
Un dictionnaire sera maintenez tous les boutons et leurs fonctions et commandes liées correspondantes .. (Key = buttonID, Value = objet ou dictionnaire tenant le nom de fonction et Control ID)

Lorsque l'utilisateur choisit de "libérer" son design, le code Construire le formulaire et tous les contrôles en tant que texte et utiliser le dictionnaire pour générer le bouton de code approprié pour connecter l'événement de clic de chaque bouton à la fonction appropriée. Le texte contiendra également d'autres dictionnaires insérés dans ce TEXT qui lieront chaque bouton à son contrôle lié (un dictionnaire pour chaque fonction), ce qui sera utilisé lorsqu'une fonction est appelée à Distinguer entre les différents contrôles liés.

Le texte sera inséré dans un fichier .cs qui sera compilé pour générer le fichier EXE (toujours penser encore des façons d'automatiser cette étape).

Je me sens comme cette solution est trop complexe et qu'il pourrait y avoir d'autres solutions plus simples.

TIA

EDIT:
Ce projet est simple, qui vise à aider les non-programmeurs de créer leurs propres programmes simples, comme l'inventaire de supermarché, ou bibliothèque DVD magasin. Pour l'instant il va faire des tâches de calculatrice simples (1 zone de texte, un couple de boutons et des fonctions comme ADD, Subtract et autres).

Répondre

1

Je pense que Compiler le « programme » qui sera conçu par l'utilisateur serait une très mauvaise idée. Ce que vous pouvez faire est de sérialiser les objets créés, et les écrire dans un fichier qui peut être désérialisé et chargé dans votre programme pour afficher le "programme" créé par les utilisateurs. Si toutes les fonctions sont prédéfinies, vous pouvez utiliser une clé unique stockée dans une nouvelle classe étendue à partir de la classe Button pour pointer vers la fonction que vous souhaitez associer au bouton. vous pouvez stocker des tableaux d'objets que l'utilisateur peut utiliser et qui peuvent être "Personnalisés" avec toutes leurs propriétés Visible définies sur false pour commencer. Je ne sais pas si le programme Compilation du programme créé par l'utilisateur est requis ou si l'utilisation de votre programme en tant que programme personnalisable en y connectant des objets sérialisés est également possible.

Quel est l'objectif souhaité du programme exactement?

J'espère que j'aiderai d'une certaine manière à apporter de nouvelles idées à votre conception. Si vous pouvez me donner plus d'informations, je pourrais essayer de vous donner un exemple de code à regarder.

+0

Merci pour les idées, j'ajoute plus de détails sur le programme lui-même. –

+0

Je suis en train de compiler le code des utilisateurs pour rendre le fichier exe portable à d'autres ordinateurs, mais la conception en série de l'utilisateur est apparue en tant qu'option, puisqu'il peut créer plusieurs designs à Release, la sérialisation est plus appropriée pour une sauvegarde/ouverture fonctionnalités. –

+0

que diriez-vous d'une structure de fichier complète. disons par exemple Tous les objets sérialisés dans un programme utilisateur appelé "Calc" sont stockés dans Calc /. à laquelle les objets sérialisés sont stockés là-dedans. Cela permettrait de réaliser plus d'un dessin et de permettre à 2 «boutons 1» d'exister dans le même espace sans se remplacer mutuellement. puis un fichier texte unique avec le nom du répertoire que vous voulez charger votre programme placé à la racine. – Skintkingle