2010-08-06 10 views
0

Je souhaite implémenter un contrôle Windows-Forms personnalisé similaire à la grille de propriétés Visual Studio. Pour cela, bien que beaucoup plus simple. Je voudrais idéalement répliquer le comportement de l'interface IWindowsFormsEditorService, qui est utilisé pour déclencher la modification sur place dans la grille de propriétés en appelant des implémentations UITypeEditor spécifiées par le client. À titre d'exemple plus simple, j'ai seulement besoin d'implémenter l'édition d'une valeur via une ComboBox simulée (ou une liste déroulante) dans une cellule. La façon dont Visual Studio le fait implique un vrai contrôle ComboBox. Au lieu de cela, Visual Studio affiche un petit bouton déroulant sur la droite de la cellule qui, lorsqu'il est pressé, déclenche l'affichage et les opérations d'un contrôle ListBox simple, positionné de manière à simuler le ComboBox étant descendu.Comment implémenter IWindowsFormsEditorService en C#? Simulation de la modification sur place dans Windows Forms

Je comprends que pour que cela se produise, je dois d'une manière ou d'une autre implémenter ma propre boucle de message modale lorsque l'édition est en cours. Cependant, j'ai de la difficulté à comprendre comment et où mettre ce message en boucle. J'ai également des problèmes avec la liste déroulante dépassant les limites de mon contrôle personnalisé.

Je suis très compétent en COM et C++, mais je voudrais implémenter une solution basée sur C# pur pour cela.

Quelle serait une bonne façon de mettre en œuvre une simple modification de CombBox In-Place simulée dans un contrôle personnalisé de type grille?

Répondre

0

Vous devez créer un formulaire distinct pour l'expérience d'édition modale (contenant une zone de liste), puis l'afficher en appelant le ShowDialog().

La méthode ShowDialog() exécutera la boucle de message modale.
Comme il s'agit d'un formulaire distinct, vous n'aurez aucun problème avec la taille du contrôle parent.

Questions connexes