I'm surprised by all the incorrect answers. solutions@ashish had the correct answer but only briefly touched on it in a comment, like an afterthought.
This may sound counter-intuitive, but first direct the user to the page you want them to see after the download. For example:
Response.Redirect("ThankYouPage.aspx", true);
On this page, which I have called ThankYouPage.aspx, in the HTML header, you will need a meta tag instructing the browser to get the download. It will be set at a zero-second delay, so the download and the page will seem to load simultaneously. The meta tag will look something like:
<html><head>
<title>Thank you for downloading</title>
<meta http-equiv="refresh" content="0;URL='http://mysite.com/files/download.zip'" />
</head><body>...
If your "ThankYouPage" is code-driven and not static HTML, you can use your back-end code to customize what the download filename will be, what the page will say, etc.
This is the correct answer. Enjoy!