I always learned by doing so here's a very basic example. Web or Windows, doesn't matter...
Model
// basic template for what your view will do
public interface IProgram
{
    public string FirstName { get; set; }
}
View
public class Program : IProgram
{
    ProgramController _controller;
    public Program()
    {
        // pass itself to the controller
        _controller = new ProgramController(this);
    }
    public string FirstName 
    {
        get { return firstNameTextBox.Value; }
        set { firstNameTextBox.Value = value; }
    }
}
Controller
public class ProgramController
{
    IProgramView _view;
    public ProgramController(IProgramView view)
    {
        // now the controller has access to _view.FirstName
        // to push data to and get data from
        _view = view;
    }
}
You can bind any members this way, such as events