Rheinwerk Computing < openbook > Rheinwerk 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

Jetzt 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 12 Die wichtigsten Steuerelemente
Pfeil 12.1 Gemeinsamkeiten
Pfeil 12.1.1 Größe und Position
Pfeil 12.1.2 Sichtbarkeit und Aktivierungszustand
Pfeil 12.1.3 Beschriftung
Pfeil 12.1.4 Farben
Pfeil 12.1.5 Grafische Darstellung
Pfeil 12.1.6 Zugriffsrechte
Pfeil 12.1.7 Zusatzinformationen speichern
Pfeil 12.1.8 Position bei Größenänderung der Form
Pfeil 12.1.9 Die Größe mit der Form skalieren
Pfeil 12.1.10 Kindelemente
Pfeil 12.1.11 Steuerelemente fokussieren
Pfeil 12.1.12 Maus- und Tastaturereignisse
Pfeil 12.2 Schaltflächen (Button)
Pfeil 12.2.1 Rahmendarstellung
Pfeil 12.2.2 Beschriftung und Grafiken
Pfeil 12.3 Auswahlkästchen (CheckBox)
Pfeil 12.3.1 Eigenschaften
Pfeil 12.3.2 Drei Zustände
Pfeil 12.4 Gruppierung (GroupBox)
Pfeil 12.5 Optionsschaltflächen (RadioButton)
Pfeil 12.5.1 Gruppierung
Pfeil 12.5.2 Eigenschaften
Pfeil 12.5.3 Zustandswechsel programmieren
Pfeil 12.6 Texteingabefelder (TextBox)
Pfeil 12.6.1 Einzeilige Eingabefelder
Pfeil 12.6.2 Mehrzeilige Eingabefelder
Pfeil 12.7 Beschriftungen (Label)
Pfeil 12.8 Popuptextfenster (ToolTip)
Pfeil 12.8.1 Definition von Hinweistexten
Pfeil 12.8.2 Anzeigedauer der Texte
Pfeil 12.8.3 Weitere Eigenschaften
Pfeil 12.9 Auswahllisten (ListBox)
Pfeil 12.9.1 Daten einer ListBox
Pfeil 12.9.2 Darstellung einer Listbox
Pfeil 12.9.3 Einfach- und Mehrfachauswahl
Pfeil 12.9.4 Listboxen mit Einfachauswahl
Pfeil 12.9.5 Listboxen mit Mehrfachauswahl
Pfeil 12.9.6 Benutzerdefinierte Sortierung
Pfeil 12.9.7 Auswahlliste mit Datenquelle (DataSource)
Pfeil 12.10 Markierte Auswahllisten (CheckedListBox)
Pfeil 12.11 Kombinationslistenfelder (ComboBox)
Pfeil 12.11.1 Ereignisse
Pfeil 12.11.2 Autovervollständigung
Pfeil 12.12 Standarddialoge
Pfeil 12.12.1 Datei zum Öffnen wählen (OpenFileDialog)
Pfeil 12.12.2 Datei zum Speichern wählen (SaveFileDialog)
Pfeil 12.12.3 Ordner selektieren (FolderBrowserDialog)
Pfeil 12.12.4 Farbe bekennen (ColorDialog)
Pfeil 12.12.5 Schriftart wählen (FontDialog)
Pfeil 12.13 Menüs, Symbol- und Statusleisten
Pfeil 12.13.1 Menüsammlung (ToolStripContainer)
Pfeil 12.13.2 Menüdefinition
Pfeil 12.13.3 Eigenschaften von Menüs
Pfeil 12.13.4 Kontextmenüs
Pfeil 12.13.5 Symbolleisten
Pfeil 12.13.6 Statusleisten
Pfeil 12.14 Bildlaufleisten (HScrollBar und VScrollBar)
Pfeil 12.15 Fortschrittsbalken (ProgressBar)
Pfeil 12.16 Animationen (Timer)
Pfeil 12.17 Container (Panel)
Pfeil 12.18 Registerkarten (TabControl)
Pfeil 12.19 Baumansichten (TreeView und TreeNode)
Pfeil 12.19.1 Knotenpunkte definieren
Pfeil 12.19.2 Eigenschaften
Pfeil 12.19.3 Ereignisse
Pfeil 12.19.4 Knotenexpansion und -reduktion
Pfeil 12.19.5 Knoten (TreeNode)
Pfeil 12.20 Teiler (Splitter und SplitContainer)
Pfeil 12.20.1 Splitter
Pfeil 12.20.2 SplitContainer
Pfeil 12.21 Listenansicht (ListView)
Pfeil 12.21.1 Beteiligte Klassen
Pfeil 12.21.2 Eigenschaften und Ereignisse
Pfeil 12.21.3 Listenelemente (ListViewItem)
Pfeil 12.21.4 Unterelemente in Spalten (ListViewSubItem)
Pfeil 12.21.5 Spaltenüberschriften (ColumnHeader)
Pfeil 12.21.6 Listenelemente Gruppen zuordnen
Pfeil 12.21.7 Sortierung der Spalten
Pfeil 12.21.8 Listenelemente ändern
Pfeil 12.21.9 Dateiexplorer-Beispiel


Rheinwerk Computing - Zum Seitenanfang

12.3 Auswahlkästchen (CheckBox) Zur nächsten ÜberschriftZur vorigen Überschrift

Objekte vom Typ CheckBox werden auch als Kontrollkästchen oder Auswahlkästchen bezeichnet. Wird zur Laufzeit auf das Kästchen geklickt, wird im Kästchen ein Häkchen angezeigt, das durch erneutes Klicken entfernt wird.

Die wichtigste Eigenschaft ist demzufolge Checked, die den Zustand des Kontrollkästchens mit einem booleschen Wert beschreibt. Der Wert der Eigenschaft gibt an, ob das Kästchen markiert ist (True) oder nicht (False). Eine Änderung der Auswahl hat die Auslösung des Ereignisses CheckedChanged zur Folge. Sie können das Ereignis dazu benutzen, um im Ereignishandler den neuen Zustand des Kästchens zu überprüfen, um darauf entsprechend zu reagieren.

Sub checkBox_CheckedChanged(sender As Object, e As EventArgs e) 
  If chekBox1.Checked Then 
    ' Anweisungen 
  Else 
    ' Anweisungen 
  End If 
End Sub

Der Aktivierungszustand wird automatisch umgeschaltet, wenn der Anwender auf das Kontrollkästchen klickt. Wenn Sie das vermeiden wollen, müssen Sie die Eigenschaft AutoCheck auf False setzen. Allerdings sind Sie dann auch in der Pflicht, einen anderen Weg zu finden, der die Umschaltung bewirkt, zum Beispiel im Click-Ereignis des Steuerelements:

' Ereignishandler des Click-Ereignisses der Checkbox 'chkBox' 
Sub checkBox_Click(sender As Object, e As EventArgs) 
   chkBox.Checked = Not chkBox.Checked 
End Sub

Das Fenster im folgenden Beispiel enthält drei Kontrollkästchen, die den Stil eines Textes in einer Textbox in beliebiger Kombination auf fett, kursiv oder unterstrichen festlegen (siehe Abbildung 12.3).

Abbildung 12.3 Ausgabe des Beispiels »CheckBoxDemo«


'...\WinControls\Selektionen\Optionen.vb

Public Class Optionen 
  Private Sub Optionen_Load(sender As Object, e AsEventArgs) _ 
  Handles MyBase.Load 
    Dim chkFont(3) As CheckBox 
    Dim Stil As String() = New String() {"Fett", "Kursiv", "Unterstrichen"} 
    For i As Integer = 0 To 2 
      chkFont(i) = New CheckBox() 
      chkFont(i).Location = New Point(25, 45 + i * 25) 
      chkFont(i).Text = Stil(i) 
      AddHandler chkFont(i).CheckedChanged, AddressOf CheckboxChanged 
    Next 
    Me.Controls.AddRange(chkFont) 
  End Sub

  Private Sub CheckboxChanged(sender As Object, e As EventArgs) 
    Dim fs() As FontStyle = _ 
      {FontStyle.Bold, FontStyle.Italic, FontStyle.Underline} 
    Dim newStyle As FontStyle = 0 
    For no As Integer = Me.Controls.Count – 3 To Me.Controls.Count – 1 
      If CType(Me.Controls(no), CheckBox).Checked Then _ 
        newStyle = newStyle Or fs(no – (Me.Controls.Count – 3)) 
    Next 
    Zeichenfolge.Font = New Font(Zeichenfolge.Font, newStyle) 
  End Sub 
End Class

Bei Auswahlkästchen und den im folgenden Abschnitt beschriebenen Optionsschaltflächen stoßen wir auf ein generelles Problem des Windows Forms-Designers. Enthält eine Form mehrere gleichartige Steuerelemente, stehen diese häufig in einem funktional-logischen Zusammenhang – wie auch in diesem Beispiel. Es bietet sich in solchen Fällen an, diesen Zusammenhang durch ein Steuerelement-Array abzubilden. Mit dem Windows Forms-Designer lassen sich jedoch solche Arrays nicht erzeugen. Aus diesem Grund werden die Kontrollkästchen durch Programmcode erzeugt. Als Alternative zur Implementation der Initialisierungslogik in der klassengebundenen Methode Main habe ich das Ereignis Load der Form gewählt. Es wird zuerst ein Array vom Typ CheckBox deklariert, das drei Elemente enthält:

Dim chkFont(3) As CheckBox

Ein zweites Array vom Typ String speichert die Beschriftungen der Kontrollkästchen. Die Erzeugung und die Spezifikation der Eigenschaften erfolgen dann in einer Schleife. Dies umfasst sowohl die Platzierung in der Form als auch die Beschriftung der Kästchen. Außerdem wird das CheckChanged-Ereignis mit der Methode CheckboxChanged() verbunden. Das Ereignis wird bei jedem Klick auf ein Kontrollkästchen ausgelöst.

Dim Stil As String() = New String() {"Fett", "Kursiv", "Unterstrichen"} 
For i As Integer = 0 To 2 
  chkFont(i) = New CheckBox() 
  chkFont(i).Location = New Point(25, 45 + i * 25) 
  chkFont(i).Text = Stil(i) 
  AddHandler chkFont(i).CheckedChanged, AddressOf CheckboxChanged 
Next

Nach der Schleife fügt die Methode AddRange von ControlCollection das CheckBox-Array zur Liste der Formelemente hinzu:

Me.Controls.AddRange(chkFont)

Sehen wir uns nun den Ereignishandler an. Mitglieder der Aufzählung FontStyle werden in derselben Reihenfolge wie die Beschriftungen der Kontrollkästchen in einem Array gespeichert. Damit kann der Zähler der Schleife als Index des Kontrollkästchen-Arrays das richtige Element aus dem FontStyle-Array zuordnen:

Dim fs() As FontStyle = {FontStyle.Bold,FontStyle.Italic,FontStyle.Underline}

Klickt der Anwender zur Laufzeit auf eines der Kontrollkästchen, wird eine Schleife durchlaufen und der Zustand Checked jedes einzelnen Kontrollkästchens überprüft. Innerhalb der Schleife wird der aktuelle Aktivierungszustand aller Auswahlkästchen abgefragt:

If CType(Me.Controls(no), CheckBox).Checked Then ...

Obwohl sich mit der Textbox ein weiteres Steuerelement in der Form befindet, dessen Referenz nicht in den Typ CheckBox konvertiert werden kann, wird die If-Anweisung zu keinem Fehler führen. Die Kontrollkästchen wurden nach der Initialisierung der im Forms-Designer hinzugefügten Komponenten in InitializeComponent hinzugefügt und befinden sich daher am Ende der Liste Controls.

Abhängig davon, ob das Kontrollkästchen markiert ist oder nicht, werden die entsprechenden Bits in der Variablen newStyle vom Typ FontStyle mit

newStyle = newStyle Or fs(no – (Me.Controls.Count – 3))

gesetzt und das Ergebnis nach Beendigung der Schleife dem zweiten Parameter des Font-Konstruktors übergeben.


Rheinwerk Computing - Zum Seitenanfang

12.3.1 Eigenschaften Zur nächsten ÜberschriftZur vorigen Überschrift

Welchen Inhalt die Beschriftung einer Checkbox hat, legen Sie in der Eigenschaft Text fest. Standardmäßig ist das Kästchen im Steuerelement links ausgerichtet, die Beschriftung rechts davon. Über die Eigenschaft CheckAlign vom Typ der Aufzählung ContentAlignment kann das Kästchen innerhalb der gesamten Fläche des Steuerelements angeordnet werden.

Die Beschriftung selbst lässt sich mit der Eigenschaft TextAlign ausrichten. Wenn Sie ein Freund von grafischen Symbolen sind, bietet sich die Eigenschaft Image an. Das Bildchen können Sie mit ImageAlign ausrichten.

Ein Kontrollkästchen muss nicht unbedingt ein Quadrat mit Häkchen sein. Hat die Eigenschaft Appearance den Wert Appearance.Button, sieht es wie eine Schaltfläche aus (der Standard ist Appearance.Normal).

Allerdings unterscheidet sich das Verhalten eines so festgelegten Kontrollkästchens von dem eines herkömmlichen Buttons, denn im ausgewählten Zustand bleibt das Kontrollkästchen – besser sollte man jetzt von einem Button sprechen – im gedrückten Zustand. Das entspricht der Einstellung True der Eigenschaft Checked. In Abbildung 12.4 ist das mit checkBox1 beschriftete Steuerelement ausgewählt, das andere nicht.

Abbildung 12.4 Kontrollkästchen mit der Einstellung Appearance.Button


Rheinwerk Computing - Zum Seitenanfang

12.3.2 Drei Zustände topZur vorigen Überschrift

Bisher haben Sie das Kontrollkästchen als ein Steuerelement kennengelernt, das die beiden Zustände True und False anzeigt. Manchmal reicht das nicht, und es ist ein »Zwischenzustand« abzubilden. Denken Sie beispielsweise an einen markierten Text in einem Textverarbeitungsdokument. In einem Kontrollkästchen wird angezeigt, ob die Buchstaben des Textes fett dargestellt sind. Nur wenn der gesamte markierte Text fett ist, wird das Häkchen gesetzt. Was aber, wenn der markierte Text nur teilweise fett geschrieben ist? Das Kästchen deaktiviert zu lassen, spiegelt genauso wenig die Realität wider wie der aktivierte Zustand. Es muss ein Kompromiss in der Darstellung des Kontrollkästchens gefunden werden. Diesen Sonderfall erfassen die beiden Eigenschaften ThreeState und CheckState.

Die Eigenschaft ThreeState beschreibt mit einem booleschen Wert, ob das Kontrollkästchen anstatt der üblichen zwei nun drei Aktivierungszustände unterstützt. Der Standard ist False. Um drei mögliche Zustände darzustellen, setzen Sie ThreeState=True. Der aktuelle Zustand des Auswahlkästchens wird danach durch die Eigenschaft CheckState beschrieben, die einen der drei Werte der gleichnamigen Enumeration annehmen kann, die in Tabelle 12.4 aufgelistet ist.


Tabelle 12.4 Die Enumeration »CheckState«

Konstante Zustand

Unchecked

Das Kästchen ist nicht markiert.

Checked

Das Kästchen ist markiert.

Intermediate

Das Kästchen ist markiert, wird zur Kennzeichnung des Zwischenzustands aber grau hinterlegt.


Wenn Sie ein Kontrollkästchen haben, das drei Zustände anzeigen kann, sollten Sie nicht das Ereignis CheckChanged, sondern das Ereignis CheckStateChanged programmieren. CheckState-Changed tritt auf, wenn sich die CheckState-Eigenschaft ändert.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual Basic 2008
Visual Basic 2008
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
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

Cookie-Einstellungen ändern