Beispiele zu Steuerelementen in .NET

AlignPopupMenu

Ein experimentelles Beispiel zur Demonstration des Erstellens eines funktionsfähigen Kontextmenüs über Plattformzugriffe. Über die API-Funktion CreatePopupMenu wird ein Kontextmenü erstellt, das anschließend über TrackPopupMenu angezeigt wird. Über entsprechende API-Aufrufe werdem dem Menü einige Einträge hinzugefügt, wobei ein Eintrag auch untergeordnete Einträge enthält. Außerdem kann die Position eingestellt werden, die das Menü zur Maus einnehmen soll.

Beispielprojekt (AlignPopupMenu.zip)

Projekt im Visual-Basic-.NET-2003-Format.

EnumerateControls

Dieses Beispiel ist eine primitive (und daher nicht besonders effiziente) Lösung zur Enumeration von Steuerelementen bestimmter Typen in bestimmten Containern. Es kann eine Menge von Containern definiert werden, deren Steuerelemente nicht enumeriert werden sollen. Dadurch ist es etwa möglich, alle Steuerelemente innerhalb eines GroupBox-Steuerelements zu enumerieren, die nicht in einem darin plazierten Panel-Steuerelement liegen. Steuerelemente, die den Kriterien entsprechen, also einen bestimmten Typ aufweisen und in einem in der Enumeration enthaltenen Container liegen, werden in das Ereignis ControlFound der Klasse ControlEnumerator durchgereicht.

Beispielprojekt (EnumerateControls.zip)

Projekt im Visual-Basic-.NET-2003-Format.

ReadOnlyListBox

Das ListBox-Steuerelement besitzt den Nachteil, daß sein Inhalt nicht vor Manipulation (Änderung der Auswahl) geschützt werden kann, ohne auch das Scrollen zu verbieten. Das Setzen der Enabled-Eigenschaft des Steuerelements auf False ist nicht ausreichend. Abhilfe schafft das Ableiten von der Klasse ListBox, um in der Fensterprozedur des Steuerelements die Nachrichten WM_KEYDOWN, WM_LBUTTONDOWN und WM_SETFOCUS zu behandeln. Wenn das Steuerelement für Benutzereingaben gesperrt sein soll, werden dem Steuerelement diese Nachrichten einfach vorenthalten.

Beispielprojekt (ReadOnlyListBox.zip)

Projekt im Visual-Basic-.NET-2003-Format.

FontList

Dieses Beispiel zeigt, wie man ein ListBox-Steuerelement in einem benutzerdefinierten Anzeigemodus versetzen kann, um alle auf dem System verfügbaren Schriftarten zur Auswahl anzubieten, wobei die Namen der Schriftarten im entsprechenden Font angezeigt werden. Da das Laden der Schriftarten längere Zeit beanspruchen kann, erfolgt die Enumeration der Fonts in einem eigenen Thread.

Durch Setzen der Eigenschaft DrawMode auf OwnerDraw* können die Einträge direkt im Code gezeichnet werden. Die Verwaltung der Einträge sowie der Bildlaufleiste erfolgt weiterhin durch Windows. Das Zeichnen der Einträge erfolgt in der Ereignisbehandlungsprozedur für das Ereignis DrawItem, in das u. a. auch ein Parameter vom Typ DrawItemEventArgs hineingereicht wird, der weitere Informationen zum zu zeichnenden Eintrag enthält. Der Wert der Eigenschaft State gibt an, in welchem Zustand sich der zu zeichnende Eintrag befindet; Bounds enthält ein Rechteck, das der Größe des zu zeichnenden Eintrags entspricht.

Beispielprojekt (FontList.zip)

Projekt im Visual-Basic-.NET-2003-Format.

RichTextBoxContext

Das RichTextBox-Steuerelement besitzt standardmäßig kein Kontextmenü mit Funktionen zur Manipulation des Inhalts und der Arbeit mit der Zwischenablage. Dies ist ärgerlich, da der Benutzer von einem Eingabefeld entsprechende Befehle erwartet. Im vorliegenden Beispiel wird eine Klasse von RichTextBox abgeleitet, die ein Kontextmenü mit den üblichen Befehlen bereitstellt. Das Menü definiert auch Beschleuniger, sodaß das gewohnte Arbeiten mit den Tastenkombination (Strg+C, Strg+V usw.) möglich ist.

Beispielprojekt (RichTextBoxContext.zip)

Projekt im Visual-Basic-.NET-2003-Format.

ThemedRichTextBox

Dieses Beispiel zeigt, wie man das RichTextBox-Steuerelement um Unterstützung für Visual Styles erweitern kann, sodaß anstelle des dreidimensionalen Rahmens ein flacher Rahmen verwendet wird.

Beispielprojekt (ThemedRichTextBox.zip)

Projekt im Visual-Basic-2005-Format.