Ok, so I'm going to go ahead and code up the scroll bars, and not use the auto scroll features.
Here's what I have so far:
ScrollableControl class that is a user-control. It contains three panel classes. Two panels hold scroll bars using Dock.Fill, and the third panel is called ClientPanel, which contains another user control called CustomTextControl. ScrollableControl currently only handles the resize event (resizes the scroll bars and the client area), and the Scroll event to capture any scrolling. Most of the real work is handled in the main CustomTextControl. Now, here's my question. When CustomTextControl adds/removes lines, that should cause ScrollableControl to update the scroll bars Maximum property. Should CustomTextControl raise a custom event to pass this message, i.e. something like LinesChanged or something? And, when the ScrollableControl class handles a Scroll event, the CustomTextControl needs to be notified that the visible region has changed (i.e. VScrollBar1.Value has chnaged). Should this be also raised as a custom event? Or should it just be passed down through the class hierarchy?
In general I guess my question is, when a child has some piece of info, and needs to notify the parent, what is the correct mechanism? And when a parent container receives some event, how should it notify a child?
Thanks...