Regarding ASP.NET Web Server Controls. They GENERATE html code.
So, an ASP.NET Web Server Button Control, creates an <input type="button"> element.
What is different about the Web Server Button Control, is that it has server-side events, properties, and methods.
So in Visual Studio.NET, you drag a button control over onto your form. Double-click it, and a code window appears. Any code you enter there will run ON THE SERVER.
What happens is, the user browses to the page, and IIS/ASP.NET renders a page for the user. The user sees a button, and clicks it. That particular click is a client-side event, and unless you code some JavaScript, nothing in particular happens. The form does submit, however, and that's where ASP.NET does a lot of house-keeping to remember that is has a "BUTTON", and that the BUTTON was clicked, and it must run the code you authored.
But none of that helps you with your problem, because printing is a client-side affair.
Really, in your scenario, you don't NEED a WebServer Button Control. A normal html button element, will work just fine:
<input type="button" onclick="window.print();" />
That is the basis of your solution.