Mario Meir-Huber

C#, VB.Net, Silverlight, XNA, VSTO, Sharepoint

November 2007 - Einträge

Silverlight 2.0 und Visual Basic

Visual Basic 9 und Silverlight 1.1 Alpha "Silverlight 2.0"

 

Eine zweifelsohne interessante Technologie ist Silverlight. Diese ist nun bereits in der Version 1.1 als Alpha Release für Entwickler vorhanden. Laut eben veröffentlichter Roadmap wird diese jedoch auf Grund der erheblichen Änderungen Silverlight 2.0 benannt werden. Im Gegensatz zur Version 1.0 unterstützt diese Visual Studio. Dies bedeutet das Silverlight nun auch von Visual Basic ansprechbar ist. Nach der Installation von Silverlight Tools for Visual Studio kann man diese verwenden. Nach dem erstellen eines neuen Silverlight-Projekts bekommt man einige Projektdateien.

Für Silverlight sind Page.xaml und Page.xaml.vb interessant. Page.xaml ist die XAML Datei, welche das Design darstellt. Die Zweite Datei ist die Code-Datei.

Zu Beginn erstellen wir uns einen TextBlock und ein Rectangle in der Designdatei.

Beide Elemente werden mit einem „x:Name“ Attribut versehen. Wenn man dieses nicht angibt ist das Objekt ausserhalb des Quellcodes nicht ansprechbar. Breite und Höhe sind einfach Attribute. Für die Ausrichtung (Left und Top) muss man „Canvas.Top“ beziehungsweise „Canvas.Left“ verwenden. Das Rectangle werden wir mit einem Linearen Farbverlauf füllen. Hierfür brauchen wir zwei Gradienstops.

  <Rectangle x:Name="Rect" Width="100" Height="100" Canvas.Left="100" Canvas.Top="100">

    <Rectangle.Fill>

      <LinearGradientBrush>

        <GradientStop Offset="0" Color="#FFCCFF00" />

        <GradientStop Offset="1" Color="#FF00FFCC"/>

      </LinearGradientBrush>

    </Rectangle.Fill>

  </Rectangle>

 

  <TextBlock x:Name="Text" Canvas.Left="100" Canvas.Top="100" Text="(empty)" />

 

Danach kann man die Objekte im Quellcode bereits ansprechen.

Zu Beginn wollen wir den Mauszeiger ändern, damit man einen Hand-Cursor hat wenn man über das TextBlock-Control fährt. Dies legen wir in der Startprozedur fest.

    Public Sub Page_Loaded(ByVal o As Object, ByVal e As EventArgs)

        ' Required to initialize variables

        InitializeComponent()

 

        Text.Cursor = Cursors.Hand

    End Sub

 

Als nächsten Schritt werden wir die Events des Objektes verwenden. Hierfür tauschen wir den Hintergrund des Rectangles aus.

Wenn man über das TextBlock-Control fährt wird der Hintergrund ausgetauscht. Hierfür müssen wir lediglich einen neuen SolidColorBrush setzten.

    Private Sub Text_MouseEnter(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs) Handles Text.MouseEnter

        Rect.Fill = New SolidColorBrush(Color.FromArgb(255, 100, 100, 255))

    End Sub

 

Nun wollen wir jedoch wieder einen LinearGradientBrush, wenn das Control verlassen wird. Hierfür müssen wir einen neuen LinearGradientBrush erstellen und zwei GradientStops definieren. Diese GradientStops benötigen Farbe und Position (Offset).

    Private Sub Text_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Text.MouseLeave

 

        Dim gb As New LinearGradientBrush

 

        Dim g1, g2 As New GradientStop

 

        g1.Color = Color.FromArgb(255, 100, 255, 100)

        g1.Offset = 0

 

        g2.Color = Color.FromArgb(255, 255, 255, 100)

        g2.Offset = 1

 

        gb.GradientStops.Add(g1)

        gb.GradientStops.Add(g2)

 

        Rect.Fill = gb

    End Sub

 

Last but not least soll auch noch eine kleine Animation ausgeführt werden. Diese müssen wir zu Beginn bereits in XAML definieren. Dies wird in „Canvas.Resources“ definiert. Eine Animation wird mit „Storyboard“ eingeleitet. Da wir die Animation im Code verwenden wollen müssen wir wieder einen Namen vergeben. Danach erstellen wir eine DoubleAnimation. Hierbei wird als TargetName das Objektangegeben, worauf sich die Animation bezieht. TargetProperty gibt die Eigenschaft an. Will man die Breite verändern, so lautet diese „Width“. Duration legt die Dauer fest. „From“ und „To“ legen schlussendlich die Werte fest.

  <Canvas.Resources>

    <Storyboard x:Name="Animate" >

      <DoubleAnimation Storyboard.TargetName="Rect" Storyboard.TargetProperty="Width" Duration="00:00:01"

                       From="100" To="200" />

    </Storyboard>

  </Canvas.Resources>

 

Im Quellcode kann man dies nun sehr einfach mit der Begin() Methode ausführen.

    Private Sub Text_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs) Handles Text.MouseLeftButtonDown

        Animate.Begin()

 

        Text.Text = "Ich wurde geklickt!"

    End Sub

 

Mit Silverlight 1.1 ist es nun nicht nur mehr JavaScript Entwicklern vorbehalten, coole Effekte zu erstellen.

Silverlight Tools for Visual Studio Download kann man unter folgender URL downloaden: http://www.microsoft.com/downloads/details.aspx?FamilyId=25144C27-6514-4AD4-8BCB-E2E051416E03&displaylang=en


 

 

Visual Basic 9 Neuerungen: Extension Methods

Extension Methods

Mit den Extension Methods ist es in Visual Basic 9 möglich, Funktionen zu Klassen hinzu zu fügen. Die Besonderheit ist jedoch, das man diese Außerhalb der Klassendefinition machen kann. Solche Extension Methods kann man auch sehr einfach an den blauen Pfeil nach unten erkennen.

Eine Extension kann man mit dem Namespace „System.Runtime.CompilerServices“ einbinden. Danach erstellt man ein neues Modul, welches erweitert werden soll. Hierbei verwendet man „KlassennameExtensions“. Will man die Double-Klasse erweitern, so verwendet man „DoubleExtensions“. Nun kann man beliebige Funktionen als Erweiterung hinzufügen. Diese kennzeichnet man einfach mit dem „Extension“-Attribut. Wichtig ist, das man mindestens einen Übergabeparameter benötigt.

Imports System.Runtime.CompilerServices 'Namespace, welcher notwendig ist

 

Module Module1

 

    Sub Main()

        Dim s As String = "Hello"

 

        s.PrintSomething()

 

        Console.ReadLine()

 

    End Sub

 

End Module

 

Module StringExtension  'Modul für die Extension,

    'Kennzeichnung als Extension

    <Extension()> _

    Public Sub PrintSomething(ByVal s As String) 'Name für die neue Funktion/Prozedur

        Console.WriteLine(s)

    End Sub

End Module

 

 

 

 

Bei Extension Methods ist es wichtig, das ein Extension Modul in demselben Namensraum vorhanden ist wie die Klasse, welche erweitert werden soll.

Ferner ist es auch möglich, eine Extension als Delegate zu verwenden. Hierbei wird der AdressOf Operator verwendet.

Imports System.Runtime.CompilerServices

 

Delegate Sub Delegated() 'Delegate Sub definieren

 

Module Module1

    Sub Main()

        Dim s As String = "Delegierte Prozedur"

        Dim d As Delegated  'Delegate erstellen

 

        d = AddressOf s.Print 'Ziel für das Delegate setzen

        d()

 

        Console.ReadLine()

    End Sub

End Module

 

Module StringExtensions 'Extension

    <Extension()> _

    Public Sub Print(ByVal s As String) 'Print, welche etwas ausgibt

        Console.WriteLine(s)

    End Sub

End Module

 

Extension Methods kann man vor allem bei LinQ sehen. Dort wird dies sehr häufig eingesetzt.

Visual Basic 9 - Die Neuerungen im Überblick

Visual Basic 9 – Die Neuerungen im Überblick

Seit Montag, dem 19. November ist nun Visual Studio 2008 verfügbar. Dies bedeutet auch, dass es eine neue Version von Visual Basic gibt. Doch was ist jetzt alles signifikant neu?

.Net 3.5 ist eine Ansammlung von Bibliotheken, welche KEINE neue CLR mit sich bringt. Der Umfang wurde lediglich erweitert. Neue Funktionen wie etwa LinQ, Anonyme Methoden usw. werden vom neuen Compiler in die CLR 2.0 umgesetzt. Der neue WPF Designer ist auch in der Express Edition verfügbar.

LinQ

Mit Hilfe von LinQ ist es nun möglich, eine SQL-ähnliche Syntax direkt im Quellcode zu verwenden. Mit Hilfe dieser Syntax kann man verschiedene Abfragen an Datentypen, Datenbanken, Listen und dergleichen durchführen. Das folgende kleine Beispiel soll dies verdeutlichen

Module Module1

    Sub Main()
        Dim res = From process In process.GetProcesses _
                      Order By process.Id _
                      Select process.Id

        For Each i As Integer In res
            Console.WriteLine(i)
        Next

        Console.ReadLine()

    End Sub

End Module

Hier werden alle Prozesse, welche laufen abgefragt. Die Bedingung „Order By“ gibt an wonach sortiert werden soll. Dadurch kann man sich komplizierte Sortieralgorithmen sparen.

XML Datentyp durch LinQ

Mit VB 9 wird Visual Basic eine XSLT-Kompatible Sprache. Dies bedeutet, dass man nun ein XML-Element ganz einfach im Quellcode eingeben kann. Vorher musste man dies mit Strings machen, nun hat man direkt im Code Unterstützung für dieses Element.

Module Module1

    Sub Main()
        Dim xe As System.Xml.Linq.XElement

        xe = <root>
                 <submenu>
                     <item attribute="something"/>
                 </submenu>
             </root>

    End Sub

End Module

WPF Designer

In VB 2008 wurde auch der WPF Designer integriert. Interessant ist hier der Split-View, wo man XAML-Code und Designerfenster gleichzeitig sieht.

Interessant ist auch das neue Intellisense. Bereits nach der Eingabe von wenigen Buchstaben hat man bereits das, was man benötigt. Dies spart bereits nach den ersten Minuten, in denen man mit VB 2008 arbeitet viel Zeit.

Also, worauf soll man noch warten? Die Express Editions sind kostenlos verfügbar. Wenn man sich entschließt, dies als Offline-Install zu laden so sind ca. 870 MB notwendig.

Downloaden kann man die Express Edition unter: http://www.microsoft.com/express/vb/

Die Zukunft von Visual Basic - Visual Basic 9 und wie es dann weiter geht

Auf der IT-Konferenz “TechEd Developers” hatten wir die Möglichkeit mit Amanda Silver und Jay Schmelzer zu sprechen. Amanda ist die Senior Program Manager Lead für Visual Basic bei Microsoft, Jay hat die Position des Group Program Managers inne.

Zuerst fragten wir nach den Stärken von Visual Basic. Amanda erklärte das VB-Code wesentlich einfacher zum lesen ist wie der Code von anderen Sprachen. Daher ist VB Code wesentlich einfacher zu warten. Gleichzeitig wurde auch die IntelliSense-Unterstützung in Visual Studio 2008 für Visual Basic verbessert. Damit verbunden wurde die Frage gestellt, wo Visual Basic in Zukunft sein wird. Amanda erwähnte die XML-Integration, welche Visual Basic zu einer XSLT-kompatiblen Sprache macht. XML ist ein wichtiger Datentyp in Visual Basic, welcher nun direkt in Visual Basic eingegeben werden kann. Ferner gibt es LinQ to XML, welches sehr umfangreich ist. Jay sagte das Visual Basic 9 sehr produktiv ist und man aufgabenorientiert arbeiten kann.

Danach stellten wir provokant die Frage in den Raum, ob man mit Visual Basic aufgrund der längeren Bezeichnungen wesentlich länger zum Entwickeln benötigt. Auch hier erwähnte Amanda die verbesserte IntelliSense Unterstützung.

Eine wichtige, neue und interessante Technologie stellt Silverlight dar. Dies kann man seit der Version 1.1 auch direkt in Visual Studio mit dem .Net Framework ansprechen. Da Silverlight jedoch hauptsächlich Flash-Entwickler ansprechen soll, stellt sich die Frage wie sich hier Visual Basic positionieren kann. Flash setzt auf ActionScript, welches JavaScript ähnelt. JavaScript wiederum ähnelt – zumindest von der Syntax her – wiederum C#. Amanda antwortete darauf, das die einzelnen Ähnlichkeiten von C# mit ActionScript die geschwungenen Klammern und Semikolons sind. Ferner ist das EventHandling in Visual Basic mit Silverlight einfacher als es mit C# ist. Schlussendlich wird der Entwickler entscheiden, welche Programmiersprache er verwenden wird.

Danach lenkten wir das Gesprächsthema zum Micro Framework. Hier wurde Visual Basic bis jetzt eher ausgelassen. Wir fragten die Beiden warum dies so sei. Laut Amanda gibt es hierfür technische Gründe. Visual Basic ist eine Hybride Sprache, welche einige Laufzeitkomponenten benötigt, welche C# nicht benötigt. Der Compiler in Visual Studio 2005 ist da einfach abgestürzt. In Visual Studio 2008 ist die Fehlertoleranz des Compilers verbessert worden, was bedeutet das der Compiler einfach meldet das gewisse Sprachfeatures nicht verwendet werden können.

Ein auch sehr interessantes Thema ist XNA. Hier wurde auch stets C# der Vorzug gegeben. Jay sagte dass dies ähnliche Gründe wie das Micro Framework hätte. Aber dies wird bereits bearbeitet.

Für die Office-Entwicklung ist Visual Basic kaum mehr weg zu denken. Hier gibt es bereits zwei Technologien: Visual Studio Tools for Office und Visual Basic for Applications. Wir fragten Jay ob diese beiden Technologien nebeneinander überleben werden. Jay antwortete dass beide notwendig sind. Die VSTO erlaubt es, komplette Applikationen auf Basis von Office zu entwickeln. VBA hingegen würde die Office-Automation erleichtern. Ferner verrieten Sie uns einige interessante Neuerungen, welche jedoch nicht genannt werden dürfen. In Verbindung mit den VSTO fragten wir auch nach der VSTA. Hierbei kann man Applikationen eine Schnittstelle zur Verfügung stellen.

Für die Zukunft von Visual Basic versprach uns Jay und Amanda eine Vielzahl von produktiven und interessanten Tools. Amanda sagte dass der Fokus auf der Weiterentwicklung der Sprache liegt.

Schlussendlich gaben Sie uns noch den Rat, verstärkt in der Community aktiv zu sein und es somit Einsteigern zu vereinfachen, Visual Basic zu erlernen.