Well, that isn't that bad. Worst part for me are the sometimes inconsistent controls. You suddenly stop moving or jump higher than expected and similar things.
Code wise there are a few cosmetic issues, like unused variables or ambiguous empty branches, etc. which are all listed by Visual Studio.
But what's more important I'd say is you should look into finite state machines and how you can use them to implement multiple screens or game states without having to duplicate code.
Right now you've got several places in the code that draw a different screen, refresh it, handle events, etc. Using a proper state machine you'd only have to clear the screen and decide what's happening in one place, which might clean up quite a few things.
Also worth mentioning, you should try to keep file names short, consistent and meaningful. For example, rather than having a "main file.cs" use "main.cs" or "options screen file.cs" should be "optionscreen.cs".