Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen der Sprachsyntax
3 Klassendesign
4 Weitere Datentypen
5 Multithreading
6 Collections und LINQ
7 Eingabe und Ausgabe
8 Anwendungen: Struktur und Installation
9 Code erstellen und debuggen
10 Einige Basisklassen
11 Windows-Anwendungen erstellen
12 Die wichtigsten Steuerelemente
13 Tastatur- und Mausereignisse
14 MDI-Anwendungen
15 Grafiken mit GDI+
16 Drucken
17 Entwickeln von Steuerelementen
18 Programmiertechniken
19 WPF – Grundlagen
20 Layoutcontainer
21 WPF-Steuerelemente
22 Konzepte von WPF
23 Datenbankverbindung mit ADO.NET
24 Datenbankabfragen mit ADO.NET
25 DataAdapter
26 Offline mit DataSet
27 Datenbanken aktualisieren
28 Stark typisierte DataSets
A Anhang: Einige Übersichten
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual Basic 2008 von Andreas Kuehnel, Stephan Leibbrandt
Das umfassende Handbuch
Buch: Visual Basic 2008

Visual Basic 2008
3., aktualisierte und erweiterte Auflage, geb., mit DVD
1.323 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1171-0
Pfeil 17 Entwickeln von Steuerelementen
Pfeil 17.1 Entwicklungsszenarien
Pfeil 17.2 Testen eines Steuerelements
Pfeil 17.3 Steuerelemente mit UserControl
Pfeil 17.3.1 Definition eines Benutzersteuerelements
Pfeil 17.3.2 Eigenschaften eines Benutzersteuerelements
Pfeil 17.3.3 Attribute eines Benutzersteuerelements
Pfeil 17.3.4 Ereignisse eines Benutzersteuerelements
Pfeil 17.3.5 Bereitstellen einer Toolbox-Bitmap
Pfeil 17.3.6 Code für EllipseLabel
Pfeil 17.4 Ein Steuerelement von einem vorhandenen ableiten
Pfeil 17.5 Eigene Steuerelemente entwerfen


Galileo Computing - Zum Seitenanfang

17.5 Eigene Steuerelemente entwerfen topZur vorigen Überschrift

Egal, ob Sie ein Benutzersteuerelement entwerfen und sich dabei der Vorlage UserControl bedienen oder ob Sie sich an den objektorientierten Ansatz erinnern und ein vorhandenes sichtbares Steuerelement ableiten, in einem Punkt gleichen sich beide Verfahren: Die Grundlage bildet immer mindestens ein vorhandenes Steuerelement.

Natürlich können Sie auch ein Steuerelement von Grund auf entwickeln. Dann müssen Sie aber auch alles selbst in die Hand nehmen und codieren, womit insbesondere das vollständige Neuzeichnen gemeint ist.

Auch wenn selbst entworfene Steuerelemente nicht auf vorhandene sichtbare Steuerelemente aufbauen, wird uns ein nicht unwesentlicher Teil der Codierung abgenommen, denn alle Steuerelemente haben eine gemeinsame Basisklasse, in der die elementarsten Eigenschaften und Methoden vordefiniert sind: Control. Um davon zu profitieren, leiten Sie ganz einfach die Klasse ab. Angenommen, das neue Steuerelement soll ein Label sein, das die Beschriftung in vertikaler Ausrichtung anzeigt, so kann die Klasse folgendermaßen definiert sein:

Public Class VerticalLabel : Inherits Control 
 ... 
End Class

Die Ableitung von Control bewirkt, dass ein leerer Clientbereich auf der Form gezeichnet wird. Da das Steuerelement aber eine grafische Präsentation haben soll – in unserem Beispiel eine vertikale Textausrichtung –, müssen wir diese selbst zeichnen. Wir wissen, dass das Paint-Ereignis immer dann ausgelöst wird, wenn eine Komponente sich selbst neu zeichnen muss. Daher überschreiben wir die von Control geerbte Methode OnPaint, die die installierten Ereignishandler aufruft, und implementieren darin den erforderlichen Code.

Beim Zeichnen müssen wir berücksichtigen, dass die Beschriftung von unten nach oben ausgerichtet ist. Das bedeutet, wir müssen sie drehen. In Kapitel 15, »Grafiken mit GDI+«, haben Sie die dazu passende Methode kennengelernt: RotateTransform, deren positive Drehrichtung im Uhrzeigersinn ist. Doch um welchen Punkt soll gedreht werden? Wenn wir die Schrift von unten nach oben ausrichten wollen, ist der Drehpunkt der linke untere Eckpunkt des Steuerelements. Da alle Komponenten links oben ihren Ursprungspunkt haben, ist eine Verschiebung mit TranslateTransform unumgänglich.

Das Neuzeichnen des Benutzersteuerelements ist auch notwendig, wenn zur Entwurfszeit die Größe eines VerticalLabel-Objekts in einer Form verändert wird. Deshalb wird mittels Programmcode durch Aufruf von Invalidate im Resize-Ereignishandler das Paint-Ereignis ausgelöst. Bei der Instanziierung mittels Doppelklick in der Toolbox zeichnen sich Steuerelemente in einer vordefinierten Standardgröße in ihren Container. Diese legen wir in der Methode InitializeComponent fest. Sie ist 25 Pixel breit und 100 Pixel hoch.

Als wir weiter oben EllipseLabel entwickelt haben, konnten wir den Text im konstituierenden Label-Steuerelement speichern. Diese Möglichkeit haben wir jetzt nicht. Stattdessen müssen wir ein Feld auf Klassenebene deklarieren, das diese Aufgabe übernimmt. Das Feld soll lblText heißen und ist, um den Konventionen eines guten objektorientierten Ansatzes zu folgen, als Private deklariert. Die Eigenschaft Text veröffentlicht das Feld.


'...\Steuerelemente\Eigene\VerticalLabel.vb

Public Class VerticalLabel : Inherits Control

  Public Sub New() 
    InitializeComponent() 
  End Sub

  Private Sub InitializeComponent() 
    Me.Size = New Size(25, 100) ' Festlegen der Standardgröße im Designer 
  End Sub

  Private Sub Neu(sender As Object, e As EventArgs) Handles Me.Resize 
    Invalidate() 
  End Sub

  Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) 
    Dim lblColor As Color = Color.Empty 
    Dim txtColor As Color = MyBase.ForeColor 
    MyBase.OnPaint(e)

    ' Rahmen zeichnen 
    e.Graphics.FillRectangle(New SolidBrush(lblColor), 0, 0, Width, Height)

    ' Ursprungspunkt versetzen und drehen 
    e.Graphics.TranslateTransform(0, Height) 
    e.Graphics.RotateTransform(270)

    ' Text in das Steuerelement zeichnen 
    e.Graphics.DrawString(lblText, Me.Font, New SolidBrush(txtColor), 0, 0) 
  End Sub

  ' Veröffentlichen der Eigenschaft 'Text' 
  Dim lblText As String 
  Public Overrides Property Text() As String 
    Get 
      Return lblText 
    End Get 
    Set(ByVal value As String) 
      lblText = value 
      Invalidate() 
    End Set 
  End Property 
End Class

Ich hoffe, ich habe Ihnen Appetit auf mehr gemacht. Die gezeigten Beispiele sind bewusst einfach gehalten und kratzen nur an der Oberfläche.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual Basic 2008
Visual Basic 2008
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Visual Basic 2012






 Visual Basic 2012


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de