When MS developed .NET they developed a series of languages to go with it.
.NET is very much like Java, in that it takes many of the good features of C++, builds on them and simplifies the language. On top of the .NET framework, MS developed a variety of languages - including VB.NET, C#, a 'managed' dialect of C++ - and there are several new third party languages which also build on .NET e.g. F#, Delphi.NET, FTN95 (a variant of FORTRAN)
Because all .NET languages are compiled into intermediate code - not true independent binaries - the concepts that the languages offer cannot differ too much from the underlying framework. Hence the great similarities between all the .NET languages.
That said, there has been a lot of 'cross-pollination' between different languages recently. I'm currently experimenting with C# v3 - which has pulled a whole host of new features from 'functional' languages like Python. Although these new features don't change the relation to the underlying framework - they provide simple, compact ways of performing tasks which would otherwise require significant coding effort. This is how languages develop - the good features survive and get incorporated into other new languages.