Так работают кнопки ASP.Net. Они отправляют обратно страницу. Когда это происходит, сначала запускается событие загрузки страницы (ну, собственно, некоторые вещи внутреннего фреймворка, затем инициализация страницы, а затем загрузка страницы). После этого ваш обработчик нажатия кнопки будет запущен.
Мне кажется, вы ответили на свой вопрос - "if (!IsPostBack)
" - это то, что нужно использовать, чтобы пропустить запуск кода загрузки страницы в сообщении.