Как организовать логирование действий пользователя в программе?
Приветствую. 
Почитал ответы. Есть несколько комментариев.
1. Log4Net отличная штука. Вам уже написали про него, его и берите. Ставьте через NuGet.
2. Не думайте делать логирование в самой БД, Никаких триггеров и т.д. Вообще забудьте о том, что в БД можно что-то делать, кроме хранения данных. Есть только одна причина что-то делать в БД - это жесткое требование заказчика, которое нельзя изменить.
3. Я не думаю, что Вам нужно записывать именно изменения контролов. Скорее Вам нужно записывать не просто изменения контролов, а изменения внесенные в хранилище данных. Т.к. пока я редактирую запись, это не надо логировать, надо логировать то, что я сохранил изменения.
4. У вас есть слой бизнес логики, вот там и логируйте информацию о том, что происходит в системе.
5. Есть еще хорошая вещь под названием аспектно-ориентированное программирование. Посмотрите что это, и как может помочь в создании системы логирования.
Нужно именно логгировать изменение контролов или уже изменение записи в таблице после сохранения?
- если записи в таблицы, проще реализовать в базе данных посредством триггеров. Путем сравнения значения до и после сохранения.
- если именно контролов, то они наверняка значения из БД через источник данных. Так что можно работать с изменениями в них!
- если именно важен сам факт изменений, а не сохраненное значение - добавьте обработку события change к каждому контролу и пишите в txt по этому событию.