Bonjour,
Je me retrouve confronté à plusieurs questions consécutives :
J'ai une série de contrôles dérivés soit de Control, soit d'autres controles "officiels". Pour ces contrôles, j'utilise un designer pour ajouter des fonctionnalités (snaplines, verbs, selectionrules,actionlists) et à partir de ces designers j'utilise des classes DesignerActionList pour créer des smartags.
Jusqu'ici, aucun problème, ça fonctionne avec tous mes contrôles.
Mais voici que je dérive un "bête" contrôle de RichTextBox, et me voici droit dans une série d'interrogations que je n'avais pas encore rencontrées.
1) J'essaye de reproduire le fonctionnement du smartTag d'un richTextBox "Modifier les lignes de texte". J'arrive bien à placer ma propriété "Lines", mais évidemment j'obtiens la même chose que dans la propertyGrid : une zone texte suivie d'un bouton <...> et non un lien ouvrant l'éditeur de tableaux string directement. Ceci est donc ma première question, mais je pensais trouver aisément la solution. Je sais que je dois passer par une méthode, mais j'ignore en fait comment afficher l'éditeur de collection.
2) Pour tenter de voir comment on a procédé dans le contrôle original, je lance donc reflector. J'arrive dans ma classe "RichTextBox", qui, comme je m'y attendais, est flanquée de l'attribut :
[Designer("System.Windows.Forms.Design.RichTextBoxDesigner,....
Donc, je me dis en bonne logique : regardons dans System.Windows.Forms.Design après la classe RichTextBoxDesigner, qui me mènera aux smartTags.
Et là, surprise, je ne trouve rien du tout ?? Est-ce que je fais une erreur de raisonnement, ou est-ce que ce designer est invisible (?) ou ne fait pas partie du framework, ou autre chose? C'est ma seconde question, découlant de la première, et qui m'interpelle d'avantage.
Enfin, après avoir fait l'impasse provisoire sur ce smartTag, je poursuis l'écriture des autres, et là, nouvelle surprise : j'obtiens bien tous mes smarttags correctement placés et décrits, MAIS il m'en reste un du RichTextBox original, le smarttag "Ancrer dans le container parent" qui reste présent. D'où vient-il et comment m'en défaire? Jusqu'ici, en surchargeant la méthode GetSortedActionItems() je renvoyais mes nouveaux items (new DesignerActionItemCollection()), mais en fait c'est vrai SAUF pour celui-là. Une explication? J'ai regardé s'il n'y avait pas un attribut spécifique sur la propriété Dock du RichTextBox, mais elle n'est même pas surchargée.
Merci d'avance,
Claude
Partager