C# 通知表单自定义文本框(预编译)中的文本已更改

C# notify a form that the text in a custom text box (precompiled) has changed

我制作了一个派生自 RichTextBox(Win Forms,.Net 2.0)的自定义文本框:

public partial class MyTextBox : RichTextBox {

我想在多个项目中重复使用这个自定义文本框,所以我将编译它并将其作为 dll 引用。在我的一个项目中,我有一个使用此自定义文本框的表单。每当自定义文本框中的文本发生更改时,我想通知父表单,以便它可以向用户发出文本已更改的信号。

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

我能想到的唯一方法是向父表单添加一个对文本更改做出反应的函数,将对此函数的引用传递给自定义文本框(作为委托?)并触发它来自 OnTextChanged(我不确定代表是否在 .Net 2.0 中工作)。有更好的方法吗?谢谢

所有你想要的都已经在 .NET 中实现了。 RichTextBox 有 public 事件 TextChanged 由您的 class 继承,您可以在您的表单中订阅此事件。

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

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