Important: nous avons vraiment besoin de la fonctionnalité indiquée, donc ne commencez pas à suggérer des alternatives.Création d'une zone de texte sans fenêtre et zoomable qui permet de créer une zone de texte Winforms réelle en C#
Nous essayons d'afficher et de saisir du texte sur un contrôle WinForms personnalisé qui inclut des zones de texte et des zones non textuelles - en d'autres termes, un canevas moderne.
Nous devons être en mesure d'afficher le texte et le curseur sur le contrôle personnalisé à différents niveaux de zoom et en utilisant d'autres effets personnalisés. Cependant, nous ne voulons pas (ou n'avons pas les moyens) d'écrire du code de méthode d'entrée pour le clavier et la souris, du code de services, etc. - la solution doit supporter toutes les langues supportées par la TextBox standard. Par conséquent, l'approche que nous considérons est d'utiliser une zone de texte cachée, et d'y router les événements du clavier et de la souris après une traduction appropriée, et d'utiliser ses accesseurs publics pour déterminer comment les caractères sont disposés. Cela nous permettrait théoriquement de mettre en évidence le texte sélectionné, de dessiner un caret, d'effectuer les bonnes actions lorsque l'utilisateur appuie sur une touche (y compris la sélection et la suppression de texte avec le clavier). la zone de texte cachée. Le résultat est que nous construisons sur la fonctionnalité de la zone de texte tout en surmontant ses limitations telles que le zoom, etc.
Nous pensons que la partie d'affichage est faisable mais l'entrée du clavier et de la souris est probablement très délicate.
Questions: Cela a-t-il déjà été essayé avec succès? Tout code de travail serait excellent.
Mise à jour: Une expérience rapide et incorrecte semble indiquer que la zone de texte ne respecte pas les coordonnées de la souris envoyées dans les messages de la souris, mais semble lire directement la position actuelle de la souris. Par conséquent, une nouvelle question:
Est-il possible de convertir tous les événements de souris TextBox en termes d'actions Direct TextBox, d'une manière qui fonctionnerait dans toutes les langues? Notre supposition que la méthode de test hit GetCharIndexFromPosition avec la méthode de sélection de texte Select, devrait suffire. Est-ce que cela semble raisonnable?
Très intéressant! Tenez-nous au courant sur le sujet si vous atteignez des objectifs! – Michael