In my honest opinion you should read a book on fundamentals of OO programming. Don't start with C++ since it might confuse you with pointers. Don't go with PHP because it's weakly typed and it's rather flexible - I don't think that it's a good foundation.
Don't go with visual basic.net - yes it's capable of a lot, and a lot of applications are written in VB.Net,however, when you learn C# or JAVA it'll be a lot easier to transfer your skills to other C-like languages.
That leaves you with JAVA and C#. Get a book on fundamentals, spend a lot of time on the concept of classes, re-usability and once you are comfortable with that move onto inheritance and interfaces. By that time you should have enough to understand the basics.
Download open-source project, nothing too complicated. Break it. Before you break it, learn how to use debugger and step through lines of code annotating each line, making sure you are 75% positive with what it does.
I wouldn't listen to people who despise .Net framework or java framework - both are very powerful and rich tools.
Google and blogs are your best friends.
Search for "Gang of four" once you are comfortable with classes. This book will give you a very solid understanding of OO programming, even though many may argue that examples in the book are confusing and structured badly.
Good luck