Good morning from Orlando. I am here for VSConnections. I flew down Sunday (7:20 AM flight through Dallas and then arriving in Orlando at 5:30 PM). Monday morning I was the demo guy (internally we use a different term but I'm not sharing that with you!) for Alan Griver's keynote. It went well. Alan did a very good job of laying out the vision for VS 2005. My first demo was of the Class Designer, which is a visual way of creating and managing classes in an application. You can drag a class out of the Toolbox onto the class diagram. This immediately creates a class file in your VS project. You can add the properties and methods in the Class Designer or in the code editor. And your code and the class diagram are continuously in synch. You can select a class in the designer and see not only its base classes but also its derived classes. Very nice!

I next showed the Consolidated Insurance demo that Jay Roxe debuted at VSLive in Bill Gates' keynote. It shows a WinForm with some nice UI (a gradiant background supplied by an image) plus the new Toolstrip control with image buttons. I dragged and dropped claim data that came from an object. I then showed a snippet that uses My to talk to the printer and also Edit and Continue. Here is the snippet code:
        With My.Computer.Printers.DefaultPrinter
            ' Click for more: 'ms-help://MS.VSCC.v80/MS.MSDNQTR.80.en/commoner/redir/redirect.htm?keyword="a1520853-292b-4f38-b838-6a7fccc44a48"'

            .FontStyle = FontStyle.Bold + FontStyle.Italic
            .FontSize = 16
            .HorizontalAlignment = HorizontalAlignment.Center
            .WriteLine("Consolidated Insurance Claim " + curClaim.ClaimID)
            .WriteLine("Claim Date: " & curClaim.IncidentDate.ToShortDateString)
            .FontStyle = FontStyle.Regular
            .FontSize = 10
            .HorizontalAlignment = HorizontalAlignment.Left
            .WriteHorizontalLine(3)
            .WriteLine()
            .WriteLine("Customer " + curClaim.Customer)
            .WriteLine()
            .WriteImage(Me.PictureBox1.Image)
            .PrintPreview()

        End With

Finally I showed the 2005 version of VS Tools for Office. I showed an Excel based expense report that gets expense data from a Web service. It also has 2 user controls, one that displays user info and one that displays the expense items. When you run the spreadsheet you see an Excel list and also the 2 user controls on the spreadsheet. How do you see user controls on the spreadsheet? Because they are added to the ActionsPane, which is similar to the Excel Task Pane except that it is a container for .NET controls. Here is the code that sits in the Workbook.vb file in this project:

Partial Class ThisWorkbook
    <Cached()> Private Expenses As ExpenseData
    Private UserInfo As New UserInfoControl
    Private Transactions As New TransactionsControl

    Protected Sub ThisWorkboox_InitializationComplete(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Initialize
        Me.Expenses = ExpenseService.GetExpenses()
        Me.Expenses.Expense.Clear()

        Me.UserInfo.DataSource = Me.Expenses.ExpenseReport
        Me.Transactions.Expenses = Me.Expenses
        Globals.Sheet1.List1.DataSource = Me.Expenses.Expense

        Me.ActionsPane.BackColor = System.Drawing.Color.FromArgb(CType(101, Byte), CType(143, Byte), CType(224, Byte))
        Me.ActionsPane.Controls.Add(Me.UserInfo)
        Me.ActionsPane.Controls.Add(Me.Transactions)
    End Sub
End Class

The code retrieves expense info from the Web service, sends the expense report level data to the UserInfo control and then sends the expense items data to the Transactions control. List1 is an Excel 2003 list which we can now treat as a .NET object and the code sets the DataSource of the list. The last two lines add the two user controls to the ActionsPane and so they appear in the spreadsheet. The current version of VS Tools for Office is very cool and powerful and the next version is a tremendous leap forward over that.

After the keynote I gave a Building Windows Apps in VB talk while Dan Fernandez gave the C# version of that talk. Then I did a Data talk which drilled down into the drag and drop data capabilities in VS. Sean Draine showed ClickOnce in the next talk and in the final talk Joe Binder drilled into some of the advanced VB language features and My. 

In addition to showing lots of exciting new features and capabilities, we tried to get across the following very important points

  • You get a lot of productivity from the data and My features. We write a bunch of code for you that you don't now have to learn and write yourself. However, behind the scenes we are writing a lot of the same code that you have to write today. So there is not going to be a signficant performance penalty from using drag and drop data or using My.
  • VB and C# are both very powerful languages and will both continue to get more powerful (generics etc). But VB is also very heavily focused on productivity. So with features like My and background compilation and compiler warnings etc we want VB to both extremely powerful and extremely productive.