It seems to be you have significant misunderstandings about how programming in general (and C# in particular) works and also about how the IP protocol (which is used to access web sites on the internet) works.
The C# misunderstanding is that you just create an object that represents an IP address and you expect that the computer will read your mind as to what does that IP address mean. If something like this was possible, you would need to use the IP address somehow in your code. It could look something like this:
webBrowser1.SourceIpAddress = addr1;
(The above code won't work, it's just a hypothetical example.)
The IP misunderstanding is that you can forge your IP address and everything will continue to work. That's not how IP works. When you send a request for some web page, your address is contained in that request. But there is a good reason for that: it's so that the recipient of your request knows where to send his response.
What this means is that you could forge your IP address, but you would never get any response from anyone, all the responses would go to the forged address. Because of that, doing something like that is not useful.