Writing text input is pretty tricky tbh, since there are lots of special cases to handle: caps lock, holding down shift, keys like ctrl+c / ctrl+v, handling numpad, pageup / pagedown, text selection, etc etc....
Since its so tricky, my advice is to use Visual Studio Form Application to create an app with just a text input, and play with it as you develop, so you'll always have a reference of "how it should be".
Out of my head, these are the key features you should implement:
- getting characters input (obviously).
- handling shift and alternative chars / capital letters (caps lock state is less trivial, I'd do it less).
- deleting character (note the difference between delete and backspace).
- artificial lag after first char, so you won't get multiple characters all the time (you'll see what I mean when playing with microsoft's textbox).
All of the above should be fairly simple to implement. You know how to get keyboard state in MonoGame right? so you can also know if shift is down and map every key to a character (assuming you only support a default keyboard layout).
These are the less critical but still important features:
- moving cursor position with arrows (note: linebreak with arrows up-down keys is tricky).
- moving cursor position with mouse click.
- scrollbar if multiline textbox.
These are a bit trickier. If you didn't implement something to draw multiline paragraphs you might want to save linebreaks for last.
And these are just nice-to-haves if you have extra time (you won't :P):
- text selection.
I wouldn't bother about these tbh but they are very common.
Sorry that my answer is a bit general, but the question was pretty general as well So I tried to provide a high-level plan for your dev.
Now you can also ask about more specific parts of the implementation, if you have troubles with them.