When you look at all of the good stuff that is in Visual Studio 2005 (i.e. Visual Studio Whidbey), its hard not to say WOW!! there is just so much good stuff in there. Things like Visual Studio Team System, the new productivity enhancements, ASP.NET V2, System.Transactions, MSBuild etc.. and they are all fantasic new features/products and I would encourage you to have a look. But there are lots of little details in Visual Studio 2005 that desire a mention as well. Take the humble, yet very powerful Web Browser control that we all know and love :).
Before the days of .NET, when developers wanted to render HTML pages within their applications, they would reference the Web Browser control, Drag'n'Drop the WebBrowser control onto a VB Form (or a C++ form) and use the standard WebBrowser interface and its 8+ methods (i.e. GoBack, GoForward, GoHome, GoSearch, Navigate, Refresh, Refresh2 and Stop). With the current versions of .NET (i.e V1.0 and V1.1) things are pretty much the same, with the obvious exception of the fact that you are going through COM Interop.
More often than not, when I see people reuse the Web Browser control in a project a few things are missed. The most notable of these would be the disabling of the context menu and keyboard accelerators. I would say that these 2 particular aspects of the control always need to be disabled in a custom project that is reusing the control. What do you think? Is it acceptable to allow the end-user to have the ability to right mouse click on a web page and click on "View Source" or go "Back"? For me it generally is not!! And most people that are reusing the browser control also have this requirement, but for different reasons its doesn't get implemented or it gets implemented in a fairly fragile & time intensive way (by having scripts in each web page capturing the right mouse click for example).
The cleanest way of controling these and many more aspects of the Web Browser control is through implementing the IDocHostUIHandler interface, but alas you can't do this in VB6. So, how do you do implement it? Will the only way in the pre .Net days was through VC++ and there is a sample of how it can be done up on the MS Support web site. Because you really could only do this in C++, is quite possibly the main reason that very few projects that I have seen actually took full control over the Web Browser control and people lived with the fact that their applications may be broken by some of the browser features not being disabled etc.. but this is where Whidbey is going to makes things V easy for you :D
Now with Visual Studio 2005, when you have the Windows Forms design opened and you have the Windows Forms Toolbox open, you will see a .NET Component called "WebBrowser". Ok, so its still reusing the same Web Browser control and its now done through the a managed wrapper of the Web Browser that is part of the System.Windows.Forms Namespace, but here comes the very interesting part!! When you drop a Web Browser control onto a WinForm and you have a peek at the properties, you will see lots of properties that can be set, including "IsWebBrowserContextMentEnabled" and "WebBrowserShortcutsEnabled". Now thats cool!! and is V productive. okay, its seems like a small thing, but not every company has a C++ developer or someone that knows COM/ActiveX to that level and this small thing meets a very common scenario/requirement very nicely, e.g. to do this in C++ takes an absolute minimium of 200+ lines of VC++ code.
For those (re)users of the Web Browser control, have a look! if you have feedback on the control and what it does, go to the MSDN Product Feedback Center