What is it that you're actually trying to achieve here? Just call Invalidate each time the Text is set? If so then you don't need to touch the Text property. You simply override the OnTextChanged method, which raises the TextChanged event. As you can imagine, it gets called from inside the Text property setter. You simply override the method and call the base implementation, then add your code either before or after that call, depending on whether you want your code executed before or after the event handlers.