Here is what you've done wrong already -- you have hand-rolled an MVC while in a state of confusion, and without any MVC under your belt.
Take a look at PureMVC, it is language agnostic and can be a good platform to get your feet wet with actually doing MVC.
Its code is small and comprehensible, and this will allow you to tweak it to your needs as you progress.
Start out writing a small simple game with it, minesweeper would be good. A lot of what Travis J said is good, especially about the Model. I would only add that you need to remember that Controllers (at least in PureMvc) are stateless, they come into existence, do their BRIEF work and go away. They are the knowlegableknowledgeable ones. They are like functions. "Fill the grid, cuz the Model changed", "Update the Model, cuz a button was pushed"
The Views (Mediators in PureMVC) are the dumbest, and the Model is only slightly smarter. Both abstract the implementation, so you (Controllers) never directly touch UI or DB.
Every element of your UI (like in a winforms app for example) has a View (Mediator - you see why this is a better term now?), but Mediators can also be made for meta-concerns like "Control Color" or "Focus Manager" which operate across UI elements. Think in layers here.
UI and DB events can automatically invoke Controllers (if you use a smart naming scheme), and certain Controllers can be phased out -- a Mediator can be made to directly listen for a Model Data change event and be delivered its data package.
Although this is kind of a cheat and requires the Model to know a bit about what is out there, and the Mediator to understand what to do with a data package, but it will keep you from getting swamped with mundane Controllers in many cases.
Model: Dumb but resusable; Controllers: Smart but less reusable (they ARE the app); Mediators: Dumb but reusable. Reusability in this case means portable to another app.