Programmieren erweiterter Winforms in C #

click fraud protection

In diesem C # -Programmier-Tutorial werde ich mich auf die erweiterten Steuerelemente wie ComboBoxes, Grids und ListViews konzentrieren und Ihnen zeigen, wie Sie sie höchstwahrscheinlich verwenden werden. Ich berühre Daten und binde erst in einem späteren Tutorial. Beginnen wir mit einem einfachen Steuerelement, einer ComboBox.

Das Herzstück einer Kombination ist eine Elementsammlung. Der einfachste Weg, diese zu füllen, besteht darin, eine Kombination auf dem Bildschirm abzulegen und Eigenschaften auszuwählen (Wenn Sie die Eigenschaftenfenster nicht sehen können, klicken Sie im oberen Menü auf Ansicht und dann auf Eigenschaftenfenster.) Suchen Sie nach Elementen und klicken Sie auf die Ellipsen Taste. Sie können dann die Zeichenfolgen eingeben, das Programm kompilieren und die Kombination nach unten ziehen, um die Auswahlmöglichkeiten anzuzeigen.

Stoppen Sie nun das Programm und fügen Sie einige weitere Zahlen hinzu: vier, fünf.. bis zu zehn. Wenn Sie es ausführen, sehen Sie nur 8, da dies der Standardwert von MaxDropDownItems ist. Sie können es auf 20 oder 3 einstellen und dann ausführen, um zu sehen, was es tut.

instagram viewer

Es ist ärgerlich, dass beim Öffnen comboBox1 angezeigt wird und Sie es bearbeiten können. Das wollen wir nicht. Suchen Sie die DropDownStyle-Eigenschaft und ändern Sie DropDown in DropDownList (es ist eine Kombination!). Jetzt gibt es keinen Text und er kann nicht bearbeitet werden. Sie können eine der Nummern auswählen, diese wird jedoch immer leer geöffnet. Wie wählen wir zunächst eine Nummer aus? Nun, es ist keine Eigenschaft, die Sie zur Entwurfszeit festlegen können, aber das Hinzufügen dieser Zeile wird dies tun.

Fügen Sie diese Zeile im Form1 () -Konstruktor hinzu. Sie müssen den Code für das Formular anzeigen (klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf From1.cs und dann auf Code anzeigen. Find InitializeComponent (); und fügen Sie diese Zeile unmittelbar danach hinzu.

Wenn Sie die DropDownStyle-Eigenschaft für die Kombination auf Einfach setzen und das Programm ausführen, erhalten Sie nichts. Es wird nicht ausgewählt oder geklickt oder geantwortet. Warum? Denn zur Entwurfszeit müssen Sie den unteren Stretchgriff greifen und die gesamte Steuerung größer machen.

In Beispiel 2 habe ich die ComboBox in Combo umbenannt, die Combo DropDownStyle wieder in DropDown geändert, damit sie bearbeitet und eine Schaltfläche zum Hinzufügen mit dem Namen btnAdd hinzugefügt werden kann. Ich habe auf die Schaltfläche Hinzufügen doppelklicken, um einen Ereignishandler für das Ereignis btnAdd_Click () zu erstellen, und diese Ereigniszeile hinzugefügt.

Wenn Sie das Programm ausführen, geben Sie eine neue Nummer ein, z. B. Elf, und klicken Sie auf Hinzufügen. Der Ereignishandler verwendet den eingegebenen Text (in Kombination). Text) und fügt es der Artikelsammlung der Combo hinzu. Klicken Sie auf die Combo und wir haben jetzt einen neuen Eintrag Elf. So fügen Sie einer Combo eine neue Zeichenfolge hinzu. Das Entfernen einer Zeichenfolge ist etwas komplizierter, da Sie den Index der Zeichenfolge suchen müssen, die Sie entfernen möchten, und ihn dann entfernen müssen. Die unten gezeigte Methode RemoveAt ist eine Erfassungsmethode, um dies zu tun. Sie müssen nur das Element im Parameter Removeindex angeben.

entfernt die Zeichenfolge an der Position RemoveIndex. Wenn die Kombination n Elemente enthält, sind die gültigen Werte 0 bis n-1. Für 10 Elemente Werte 0..9.

Wenn der Text nicht gefunden wird, wird -1 zurückgegeben, andernfalls wird der auf 0 basierende Index der Zeichenfolge in der Kombinationsliste zurückgegeben. Es gibt auch eine überladene Methode von FindStringExact, mit der Sie angeben können, wo Sie die Suche starten, sodass Sie die erste usw. überspringen können, wenn Sie Duplikate haben. Dies kann nützlich sein, um Duplikate in einer Liste zu entfernen.

Durch Klicken auf btnAddMany_Click () wird der Text aus der Combo gelöscht und der Inhalt der Combo Items-Auflistung gelöscht. Anschließend wird die Combo aufgerufen. AddRange (um die Zeichenfolgen aus dem Werte-Array hinzuzufügen. Danach wird der SelectedIndex der Combo auf 0 gesetzt. Dies zeigt das erste Element in der Kombination. Wenn Sie Elemente in einer ComboBox hinzufügen oder löschen, sollten Sie nachverfolgen, welches Element ausgewählt ist. Wenn Sie SelectedIndex auf -1 setzen, werden die ausgewählten Elemente ausgeblendet.

Die Schaltfläche Lose hinzufügen löscht die Liste und fügt 10.000 Zahlen hinzu. Ich habe Combo hinzugefügt. BeginUpdate () und Combo, EndUpdate () ruft die Schleife auf, um zu verhindern, dass Windows versucht, das Steuerelement zu aktualisieren. Auf meinem drei Jahre alten PC dauert es etwas mehr als eine Sekunde, um der Kombination 100.000 Zahlen hinzuzufügen.

Dies ist eine praktische Steuerung zum Anzeigen von Tabellendaten ohne die Komplexität eines Rasters. Sie können Elemente als große oder kleine Symbole, als Liste von Symbolen in einer vertikalen Liste oder am nützlichsten als Liste von Elementen und Unterelementen in einem Raster anzeigen. Genau das tun wir hier.

Nachdem Sie eine ListView in einem Formular abgelegt haben, klicken Sie auf die Eigenschaft column und fügen Sie 4 Spalten hinzu. Dies sind TownName, X, Y und Pop. Legen Sie den Text für jeden ColumnHeader fest. Wenn Sie die Überschriften in der ListView nicht sehen können (nachdem Sie alle 4 hinzugefügt haben), setzen Sie die View-Eigenschaft der ListView auf Details. Wenn Sie den Code für dieses Beispiel anzeigen, navigieren Sie zu Windows Form Designer-Code und erweitern Sie den Bereich, in dem der Code angezeigt wird, der die ListView erstellt. Es ist nützlich zu sehen, wie das System funktioniert, und Sie können diesen Code kopieren und selbst verwenden.

Sie können die Breite für jede Spalte manuell einstellen, indem Sie den Cursor über die Überschrift bewegen und ziehen. Sie können dies auch im sichtbaren Code tun, nachdem Sie den Bereich des Formulardesigners erweitert haben. Sie sollten folgenden Code sehen:

In der Populationsspalte werden Änderungen im Code im Designer angezeigt und umgekehrt. Beachten Sie, dass selbst wenn Sie die Locked-Eigenschaft auf true setzen, dies nur den Designer betrifft und Sie zur Laufzeit die Größe von Spalten ändern können.

ListViews verfügen außerdem über eine Reihe dynamischer Eigenschaften. Klicken Sie auf (Dynamische Eigenschaften) und aktivieren Sie die gewünschte Eigenschaft. Wenn Sie eine Eigenschaft als dynamisch festlegen, wird eine XML-Konfigurationsdatei erstellt und dem Projektmappen-Explorer hinzugefügt.

Änderungen zur Entwurfszeit vorzunehmen ist eine Sache, aber wir müssen dies wirklich tun, wenn das Programm ausgeführt wird. Eine ListView besteht aus 0 oder mehr Elementen. Jedes Element (ein ListViewItem) verfügt über eine Texteigenschaft und eine SubItems-Auflistung. In der ersten Spalte wird der Elementtext angezeigt, in der nächsten Spalte wird SubItem [0] .text, dann SubItem [1] .text usw. angezeigt.

Ich habe eine Schaltfläche hinzugefügt, um eine Zeile und ein Bearbeitungsfeld für den Städtenamen hinzuzufügen. Geben Sie einen beliebigen Namen in das Feld ein und klicken Sie auf Zeile hinzufügen. Dadurch wird der ListView eine neue Zeile hinzugefügt, wobei der Städtename in die erste Spalte und die nächsten drei Spalten eingefügt wird (SubItems [0..2]) werden durch Hinzufügen dieser Zeichenfolgen mit Zufallszahlen (in Zeichenfolgen konvertiert) gefüllt Sie.

Setzen Sie nun die ListView Multiselect-Eigenschaft auf false. Wir möchten jeweils nur ein Element auswählen. Wenn Sie jedoch mehrere Elemente auf einmal entfernen möchten, ist dies ähnlich, außer dass Sie in umgekehrter Reihenfolge durchlaufen müssen. (Wenn Sie in normaler Reihenfolge eine Schleife ausführen und Elemente löschen, stimmen die nachfolgenden Elemente nicht mit den ausgewählten Indizes überein.)

Das Rechtsklick-Menü funktioniert noch nicht, da keine Menüelemente angezeigt werden können. Klicken Sie also mit der rechten Maustaste auf PopupMenu (unter dem Formular) und Sie sehen das Kontextmenü oben im Formular, in dem der normale Menüeditor angezeigt wird. Klicken Sie darauf und geben Sie dort Typ eingeben und Element entfernen ein. Das Eigenschaftenfenster zeigt ein MenuItem an, das in mniRemove umbenannt wird. Doppelklicken Sie auf diesen Menüpunkt und Sie sollten die Ereignishandler-Codefunktion menuItem1_Click erhalten. Fügen Sie diesen Code hinzu, damit er so aussieht.

Wenn Sie das Element "Entfernen" aus den Augen verlieren, klicken Sie einfach auf das PopupMenu-Steuerelement unter dem Formular im Formular-Designer. Das wird es wieder in Sicht bringen.

Wenn Sie es jedoch ausführen und kein Element hinzufügen und auswählen, wird beim Klicken mit der rechten Maustaste und Aufrufen des Menüs und Klicken auf Element entfernen eine Ausnahme ausgelöst, da kein ausgewähltes Element vorhanden ist. Das ist eine schlechte Programmierung. So beheben Sie das Problem. Doppelklicken Sie auf das Popup-Ereignis und fügen Sie diese Codezeile hinzu.

Ein DataGridView ist sowohl die komplexeste als auch die nützlichste Komponente, die kostenlos mit C # bereitgestellt wird. Es funktioniert sowohl mit Datenquellen (d. H. Daten aus einer Datenbank) als auch ohne (dh Daten, die Sie programmgesteuert hinzufügen). Für den Rest dieses Tutorials werde ich zeigen, wie man es ohne Datenquellen verwendet. Für einfachere Anzeigebedürfnisse finden Sie möglicherweise eine einfachere ListView, die besser geeignet ist.

Wenn Sie ein älteres DataGrid-Steuerelement verwendet haben, ist dies nur eines der Steuerelemente für Steroide: Es bietet Ihnen mehr integrierte Spaltentypen, mit denen Sie arbeiten können Interne und externe Daten, mehr Anpassung der Anzeige (und Ereignisse) und mehr Kontrolle über die Handhabung von Zellen mit Einfrieren von Zeilen und Säulen.

Wenn Sie Formulare mit Rasterdaten entwerfen, geben Sie normalerweise unterschiedliche Spaltentypen an. Möglicherweise haben Sie Kontrollkästchen in einer Spalte, schreibgeschützten oder bearbeitbaren Text in einer anderen Spalte und Kursnummern. Diese Spaltentypen werden normalerweise auch unterschiedlich ausgerichtet, wobei die Zahlen im Allgemeinen rechtsbündig ausgerichtet sind, sodass die Dezimalstellen ausgerichtet sind. Auf Spaltenebene können Sie zwischen Schaltfläche, Kontrollkästchen, Kombinationsfeld, Bild, Textfeld und Links wählen. Wenn dies nicht ausreicht, können Sie Ihre eigenen benutzerdefinierten Typen definieren.

Der einfachste Weg, Spalten hinzuzufügen, ist das Entwerfen in der IDE. Wie wir zuvor gesehen haben, schreibt dies nur Code für Sie und wenn Sie dies einige Male getan haben, möchten Sie den Code möglicherweise lieber selbst hinzufügen. Sobald Sie dies einige Male getan haben, erhalten Sie Einblicke in die programmgesteuerte Ausführung.

Beginnen wir mit dem Hinzufügen einiger Spalten, legen Sie eine DataGridView im Formular ab und klicken Sie auf den kleinen Pfeil in der oberen rechten Ecke. Klicken Sie dann auf Spalte hinzufügen. Mach das dreimal. Daraufhin wird ein Dialogfeld "Spalte hinzufügen" angezeigt, in dem Sie den Namen der Spalte und den Text festlegen, der oben in der Spalte angezeigt werden soll, und in dem Sie den Typ auswählen können. Die erste Spalte ist YourName und die Standard-Textbox (dataGridViewTextBoxColumn). Stellen Sie den Kopfzeilentext ebenfalls auf Ihren Namen ein. Machen Sie die zweite Spalte Alter und verwenden Sie eine ComboBox. Die dritte Spalte ist zulässig und eine CheckBox-Spalte.

Nachdem Sie alle drei hinzugefügt haben, sollte eine Zeile mit drei Spalten mit einer Kombination in der mittleren Spalte (Alter) und einem Kontrollkästchen in der Spalte Zulässig angezeigt werden. Wenn Sie auf DataGridView klicken, sollten Sie im Eigenschafteninspektor Spalten suchen und auf (Sammlung) klicken. Daraufhin wird ein Dialogfeld geöffnet, in dem Sie Eigenschaften für jede Spalte festlegen können, z. B. einzelne Zellenfarben, QuickInfo-Text, Breite, Mindestbreite usw. Wenn Sie kompilieren und ausführen, werden Sie feststellen, dass Sie die Spaltenbreite und die Laufzeit ändern können. Im Eigenschafteninspektor für die Haupt-DataGridView können Sie AllowUser so einstellen, dass resizeColumns auf false gesetzt wird, um dies zu verhindern.

Wir werden dem DataGridView-Steuerelement Zeilen im Code hinzufügen, und ex3.cs in der Beispieldatei enthält diesen Code. Beginnen Sie mit dem Hinzufügen eines TextEdit-Felds, einer ComboBox und einer Schaltfläche zum Formular mit der DataGridView. Setzen Sie die DataGridView-Eigenschaft AllowUserto AddRows auf false. Ich benutze auch Beschriftungen und nenne die Combobox cbAges, die Schaltfläche btnAddRow und die TextBox tbName. Ich habe auch eine Schaltfläche zum Schließen für das Formular hinzugefügt und darauf doppelklickt, um ein btnClose_Click-Ereignishandler-Skelett zu generieren. Wenn Sie dort das Wort Close () hinzufügen, funktioniert dies.

Standardmäßig ist die Eigenschaft "Zeile hinzufügen" beim Start auf "false" gesetzt. Wir möchten der DataGridView keine Zeilen hinzufügen, es sei denn, das Feld Name TextEdit und die ComboBox enthalten Text. Ich habe die Methode CheckAddButton erstellt und dann einen Leave-Ereignishandler für das Bearbeitungsfeld Name Text generiert, indem ich bei der Anzeige der Ereignisse neben dem Wort Leave in den Eigenschaften doppelklickte. Das Feld Eigenschaften zeigt dies im obigen Bild. Standardmäßig werden im Feld Eigenschaften Eigenschaften angezeigt. Sie können jedoch Ereignishandler anzeigen, indem Sie auf die Blitzschaltfläche klicken.

Sie könnten stattdessen das TextChanged-Ereignis verwenden, obwohl dies den CheckAddButton () aufruft. Verfahren für jeden Tastendruck und nicht, wenn die Kontrolle verlassen wird, d. h. wenn eine andere Kontrolle gewinnt Fokus. In der Alterskombination habe ich das Ereignis TextChanged verwendet, aber den Ereignishandler tbName_Leave ausgewählt, anstatt doppelt zu klicken, um einen neuen Ereignishandler zu erstellen.

Nicht alle Ereignisse sind kompatibel, da einige Ereignisse zusätzliche Parameter bereitstellen. Wenn Sie jedoch einen zuvor generierten Handler sehen können, können Sie ihn verwenden. Es ist meistens eine Frage der Präferenz, Sie können für jedes Steuerelement, das Sie sind, einen separaten Ereignishandler haben Verwenden oder Freigeben von Ereignishandlern (wie ich), wenn sie eine gemeinsame Ereignissignatur haben, d. h. die Parameter sind die gleich.

Ich habe die DataGridView-Komponente der Kürze halber in dGView umbenannt und auf AddRow doppelklickt, um ein Event-Handler-Skelett zu generieren. Dieser Code unten fügt eine neue leere Zeile hinzu und erhält diesen Zeilenindex (es ist RowCount-1, da es gerade hinzugefügt wurde und RowCount 0 ist basiert) und greift dann über ihren Index auf diese Zeile zu und legt die Werte in den Zellen in dieser Zeile für die Spalten YourName und fest Alter.

Beim Entwerfen eines Formulars sollten Sie in Bezug auf Container und Steuerelemente überlegen, welche Gruppen von Steuerelementen zusammengehalten werden sollen. In westlichen Kulturen lesen die Leute sowieso von oben links nach unten rechts, also erleichtern Sie das Lesen auf diese Weise.

Ein Container ist eines der Steuerelemente, das andere Steuerelemente enthalten kann. Zu den in der Toolbox enthaltenen Elementen gehören Panel, FlowLayoutpanel, SplitContainer, TabControl und TableLayoutPanel. Wenn Sie die Toolbox nicht sehen können, verwenden Sie das Menü Ansicht und Sie werden es finden. Container halten Steuerelemente zusammen. Wenn Sie den Container verschieben oder seine Größe ändern, wirkt sich dies auf die Positionierung der Steuerelemente aus. Verschieben Sie einfach die Steuerelemente über den Container im Formular-Designer, und es wird erkannt, dass der Container jetzt verantwortlich ist.

Ein Bedienfeld ähnelt einer GroupBox, aber eine GroupBox kann nicht scrollen, sondern eine Beschriftung anzeigen und hat standardmäßig einen Rahmen. Panels können Rahmen haben, aber standardmäßig nicht. Ich benutze GroupBoxen, weil sie besser aussehen und dies wichtig ist, weil:

Panels eignen sich auch zum Gruppieren von Containern, sodass Sie möglicherweise zwei oder mehr GroupBoxen in einem Panel haben.

Hier ist ein Tipp zum Arbeiten mit Containern. Legen Sie einen geteilten Container in einem Formular ab. Klicken Sie auf das linke und dann auf das rechte Feld. Versuchen Sie nun, den SplitContainer aus dem Formular zu entfernen. Es ist schwierig, bis Sie mit der rechten Maustaste auf eines der Bedienfelder klicken und dann auf SplitContainer1 auswählen klicken. Sobald alles ausgewählt ist, können Sie es löschen. Eine andere Möglichkeit, die für alle Steuerelemente und Container gilt, ist Drücken Sie die Esc-Taste um das übergeordnete Element auszuwählen.

Container können auch ineinander nisten. Ziehen Sie einfach eine kleine über eine größere und Sie sehen kurz eine dünne vertikale Linie, die anzeigt, dass sich eine jetzt in der anderen befindet. Wenn Sie den übergeordneten Container ziehen, wird das untergeordnete Container mit verschoben. Beispiel 5 zeigt dies. Standardmäßig befindet sich das hellbraune Bedienfeld nicht im Container. Wenn Sie also auf die Schaltfläche zum Verschieben klicken, wird die GroupBox verschoben, das Bedienfeld jedoch nicht. Ziehen Sie nun das Bedienfeld über die GroupBox, sodass es sich vollständig in der Groupbox befindet. Wenn Sie diesmal kompilieren und ausführen, werden beide durch Klicken auf die Schaltfläche Verschieben zusammen verschoben.

Ein TableLayoutpanel ist ein interessanter Container. Es ist eine Tabellenstruktur, die wie ein 2D-Gitter von Zellen organisiert ist, wobei jede Zelle nur ein Steuerelement enthält. Sie können nicht mehr als ein Steuerelement in einer Zelle haben. Sie können angeben, wie die Tabelle wächst, wenn weitere Steuerelemente hinzugefügt werden, oder auch wenn sie nicht wächst. Sie scheint einer HTML-Tabelle nachempfunden zu sein, da Zellen Spalten oder Zeilen umfassen können. Sogar das Verankerungsverhalten von untergeordneten Steuerelementen im Container hängt von den Einstellungen für Rand und Abstand ab. Weitere Informationen zu Ankern finden Sie auf der nächsten Seite.

In Beispiel Ex6.cs habe ich mit einer einfachen zweispaltigen Tabelle begonnen und diese über das Dialogfeld Steuerelement und Zeilenstile angegeben (wählen Sie das Steuerelement aus und klicken Sie auf das kleine Element Das rechtwinklige Dreieck befindet sich oben rechts, um eine Liste der Aufgaben anzuzeigen. Klicken Sie auf das letzte Dreieck. Die linke Spalte ist 40% und die rechte Spalte 60% der Breite. Sie können die Spaltenbreiten in absoluten Pixeln, in Prozent oder einfach in der automatischen Größe angeben. Eine schnellere Möglichkeit, zu diesem Dialogfeld zu gelangen, besteht darin, im Eigenschaftenfenster auf die Sammlung neben Spalten zu klicken.

Ich habe eine AddRow-Schaltfläche hinzugefügt und die GrowStyle-Eigenschaft mit ihrem Standard-AddRows-Wert belassen. Wenn die Tabelle voll ist, wird eine weitere Zeile hinzugefügt. Alternativ können Sie die Werte auf AddColumns und FixedSize setzen, damit sie nicht mehr wachsen können. Wenn Sie in Ex6 auf die Schaltfläche Steuerelemente hinzufügen klicken, werden die AddLabel () -Methode dreimal und AddCheckBox () einmal aufgerufen. Jede Methode erstellt eine Instanz des Steuerelements und ruft dann tblPanel auf. Kontrollen. Add () Nachdem das 2. Steuerelement hinzugefügt wurde, lässt das dritte Steuerelement die Tabelle wachsen. Das Bild zeigt es, nachdem einmal auf die Schaltfläche Steuerelement hinzufügen geklickt wurde.

Falls Sie sich fragen, woher die Standardwerte in den von mir aufgerufenen Methoden AddCheckbox () und AddLabel () stammen, war das Steuerelement Ursprünglich manuell zur Tabelle im Designer hinzugefügt und dann wurde der Code zum Erstellen und Initialisieren aus dieser Tabelle kopiert Region. Sie finden den Initialisierungscode im Methodenaufruf InitializeComponent, sobald Sie auf das + links neben der Region unten klicken:

Sie können mehrere Steuerelemente gleichzeitig auswählen, indem Sie die Umschalttaste gedrückt halten, wenn Sie das zweite und die nachfolgenden Steuerelemente auswählen, auch Steuerelemente unterschiedlichen Typs. Das Eigenschaftenfenster zeigt nur die Eigenschaften an, die beiden gemeinsam sind, sodass Sie sie alle auf die gleiche Größe, Farbe und Textfelder usw. einstellen können. Sogar dieselben Ereignishandler können mehreren Steuerelementen zugewiesen werden.

Abhängig von der Verwendung werden einige Formulare häufig vom Benutzer in der Größe geändert. Nichts sieht schlimmer aus, als die Größe eines Formulars zu ändern und zu sehen, dass die Steuerelemente in derselben Position bleiben. Alle Steuerelemente verfügen über Anker, mit denen Sie sie an den 4 Kanten "anbringen" können, sodass sich das Steuerelement bewegt oder streckt, wenn eine angehängte Kante verschoben wird. Dies führt zu folgendem Verhalten, wenn ein Formular vom rechten Rand gestreckt wird:

Für Schaltflächen wie Schließen, die sich traditionell unten rechts befinden, ist Verhalten 3 erforderlich. ListViews und DataGridViews eignen sich am besten für 2, wenn die Anzahl der Spalten ausreicht, um das Formular zu überlaufen, und ein Bildlauf erforderlich ist. Die oberen und linken Anker sind die Standardeinstellungen. Das Eigenschaftenfenster enthält einen kleinen Editor, der wie die englische Flagge aussieht. Klicken Sie einfach auf einen der Balken (zwei horizontal und zwei vertikal), um den entsprechenden Anker zu setzen oder zu löschen, wie in der Abbildung oben gezeigt.

Eine Eigenschaft, die nicht viel erwähnt wird, ist die Tag-Eigenschaft, und dennoch kann sie unglaublich nützlich sein. Im Eigenschaftenfenster können Sie nur Text zuweisen, aber in Ihrem Code können Sie jeden Wert haben, der von Object abstammt.

Ich habe Tag verwendet, um ein gesamtes Objekt zu halten, während nur einige seiner Eigenschaften in einer ListView angezeigt wurden. Beispielsweise möchten Sie möglicherweise nur einen Kundennamen und eine Kundennummer in einer Kundenzusammenfassungsliste anzeigen. Klicken Sie jedoch mit der rechten Maustaste auf den ausgewählten Kunden und öffnen Sie ein Formular mit allen Kundendaten. Dies ist einfach, wenn Sie die Kundenliste erstellen, indem Sie alle Kundendetails im Speicher lesen und dem Kundenklassenobjekt im Tag einen Verweis zuweisen. Alle Steuerelemente haben ein Tag.

Ein TabControl ist eine praktische Möglichkeit, durch mehrere Registerkarten Platz im Formular zu sparen. Jede Registerkarte kann ein Symbol oder einen Text enthalten. Sie können eine beliebige Registerkarte auswählen und deren Steuerelemente anzeigen. Das TabControl ist ein Container, enthält jedoch nur TabPages. Jede TabPage ist auch ein Container, dem normale Steuerelemente hinzugefügt werden können.

In Beispiel x7.cs habe ich ein Fenster mit zwei Registerkarten erstellt, auf dem die erste Registerkarte mit dem Namen Steuerelemente drei Schaltflächen und ein Kontrollkästchen enthält. Die zweite Registerkarte trägt die Bezeichnung "Protokolle" und wird verwendet, um alle protokollierten Aktionen anzuzeigen, einschließlich Klicken auf eine Schaltfläche oder Umschalten eines Kontrollkästchens. Eine Methode namens Log () wird aufgerufen, um jeden Klick auf eine Schaltfläche usw. zu protokollieren. Es fügt die angegebene Zeichenfolge einer ListBox hinzu.

Außerdem habe ich dem TabControl auf die übliche Weise zwei Rechtsklick-Popup-Menüelemente hinzugefügt. Fügen Sie dem Formular zunächst einen ContextMenuStrip hinzu und legen Sie ihn in der ContextStripMenu-Eigenschaft des TabControl fest. Die beiden Menüoptionen sind Neue Seite hinzufügen und Diese Seite entfernen. Ich habe jedoch das Entfernen der Seite eingeschränkt, sodass nur neu hinzugefügte Registerkarten entfernt werden können und nicht die beiden ursprünglichen.

Dies ist einfach. Erstellen Sie einfach eine neue Registerkarte, geben Sie ihr eine Textbeschriftung für die Registerkarte und fügen Sie sie der TabPages-Auflistung des Tabs TabControl hinzu

Das Entfernen einer Seite ist nur eine Frage des Aufrufs von TabPages. RemoveAt () mithilfe der Registerkarten. SelectedIndex, um die aktuell ausgewählte Registerkarte abzurufen.

In diesem Tutorial haben wir gesehen, wie einige der komplexeren Steuerelemente funktionieren und wie sie verwendet werden. Im nächsten Tutorial werde ich mit dem GUI-Thema fortfahren und mir den Hintergrund-Worker-Thread ansehen und zeigen, wie man ihn verwendet.

instagram story viewer