Я читал Visual C# на примерах. Для первых шагов самое то. А уже потом можно систематизировать знания, почитав справочник по платформе .Net и по самому языку C#.
Вторым вариантом (так и не реализованным) были интерфейсы с нужными функциями. Но тогда пришлось бы городить объекты для обработки каждой из кнопок.
Как быть, если у нас нужно обработать 3 разнотипных Callback-а? Наследоваться от 3 интерфейсов? Или создавать класс-друг с указателем на объект и методами обратного вызова?