This issue is causing me a lot of problems. I know that you say it's "by design", but if so, then IMHO, that is really crazy. I've been programming about 20 years, VB/VB.NET for about 10, and recently, I've had the pleasure (?) of working with web application design for a few months now.
Some of the controls, such as text boxes, check boxes, etc allow you to set AutoPostBack to true or false. The button, on the other hand, does not. What is REALLY FRUSTRATING is that the click event behind the button IS FIRED AFTER RELOADING THE PAGE!!! It should be fired immediately, not after a Page reload. (Just insert a msgbox statement in the Page_Load event and one in the Button_Click event and you'll see that this is true).
Worse yet, the suggestion that is given here to check the Page.IsPostBack property DOESN'T WORK for Buttons!!! Again, you can test this by sticking a MsgBox in an "If Page.IsPostBack=True Then" statement in the Page_Load event!
So, if there's a workaround (without having to install & use AJAX or something else), please let me know. All in all, if this IS by design, then it's a very poor design (since when is programming illogical?).