2017-03-23 6 views
1

J'ai fait une zone de texte personnalisé dérivé de RichTextBox (Forms Win, .Net 2.0):C# notifier une forme que le texte dans une zone de texte personnalisé (précompilés) a changé

public partial class MyTextBox : RichTextBox { 

Je veux utiliser ce zone de texte personnalisé dans plusieurs projets, je vais donc le compiler et le référencer comme une DLL. Dans un de mes projets, j'ai un formulaire qui utilise cette zone de texte personnalisée. Chaque fois que le texte dans la zone de texte personnalisé a changé, je souhaite notifier le formulaire parent afin qu'il puisse signaler à l'utilisateur que le texte a changé.

protected override void OnTextChanged(EventArgs e) { 
     // notify the parent form somehow that text has changed 
     base.OnTextChanged(e); 
    } 

La seule façon que je peux penser à faire est d'ajouter une fonction à la forme mère qui réagit au changement de texte, passer une référence à cette fonction à la zone de texte personnalisé (en tant que délégué?) et le déclencher depuis OnTextChanged (je ne suis pas sûr que les délégués travaillent dans .Net 2.0). Y a-t-il de meilleurs moyens? Merci.

Répondre

2

Tout ce que vous voulez déjà mis en œuvre dans le .NET. RichTextBox a un événement public TextChanged qui est hérité par votre classe et vous pouvez vous abonner à cet événement dans votre formulaire.

public class MyForm 
{ 
    private MyTextBox _textBox; 
    .... 

    public MyForm() 
    { 
     InitializeComponent(); 
     _textBox = new MyTextBox(); 
     _textBox.TextChanged += (s, e) => {...}; 
     .... 
    } 
} 
+0

Sons assez simples. Merci. – MrSparkly