But if the rich text box has a font object *as part of it* (?)
I.e. it uses a font object within its make-up
Why can't I access that ?
But you can access it, the RichTextBox.Font property has both a getter and a setter. However, if memory doesn't fail me, the Font class is immutable--you can't change the Font object's fields. So you can't just set Font.FontFamily. You have to create
a new instance of Font and set that on the RichTextBox. That's a feature of Font, not RichTextBox.
This probably works out well for RichTextBox, as it would like to know when the font changes, so forcing you to use a setter makes it clear when the font changed. Hypothetically,
// Ah, we're changing the font!
_font = value;
InvalidateLayout(); // Force a layout and redraw.