Libe Community,
ich möchte euch hiermit vorstellen, wie ihr eigene Controls mit den, von den Framework-eigenen Controls bekannten, Ausrichtungslinien, sogenannten Snaplines, ausstattet. Diese Hilfslinien lassen eure Controls profesioneller wirken und erleichtern die Positionierung der Controls.
Der Designer
Dies wird mit einem sogenannten ControlDesigner bewerkstelligt:
Erstellt eine neue Klasse (nach Namenskonvention der Name des Steuerelements, für das der Designer ist, & "Designer", z.B.: MeinControlDesigner) ...
... und leitet diese Klasse von ControlDesigner ab:
In diese Klasse kommt dann die überschreibende, ReadOnly-Property SnapLines, wie folgt:
und in diese dann folgendes:
Ich denke, die Kommentare sind relativ verständlich, deshalb hier nicht mehr dazu.
Fehlerquellen/ Wichtiges
Ich hoffe, ich konnte euch helfen,
mfG,
Hermann
/Edit: Ich möchte darauf hinweisen, dass dieser Code Grösstenteils im folgenden Thread im Hauptforum ausgearbeitet und gelöst wurde:
Thread: Usercontrol anhand des Textes positionieren
ich möchte euch hiermit vorstellen, wie ihr eigene Controls mit den, von den Framework-eigenen Controls bekannten, Ausrichtungslinien, sogenannten Snaplines, ausstattet. Diese Hilfslinien lassen eure Controls profesioneller wirken und erleichtern die Positionierung der Controls.
Dies wird mit einem sogenannten ControlDesigner bewerkstelligt:
Erstellt eine neue Klasse (nach Namenskonvention der Name des Steuerelements, für das der Designer ist, & "Designer", z.B.: MeinControlDesigner) ...
... und leitet diese Klasse von ControlDesigner ab:
In diese Klasse kommt dann die überschreibende, ReadOnly-Property SnapLines, wie folgt:
und in diese dann folgendes:
VB.NET-Quellcode
- Get
- Dim snapLinesList As ArrayList = TryCast(MyBase.SnapLines, ArrayList)
- Dim offset As Integer = 5 'Das ist nur ein Beispiel,
- 'später wird in offset der entsprechende Wert angegeben
- snapLinesList.Add(New SnapLine(SnapLineType.Baseline, offset, SnapLinePriority.Medium))
- 'Auch hier kann/ muss noch etwas angepasst werden:
- ' SnapLine.Baseline gibt an, dass es sich um die Grundlinie handelt, wie bei Text... (aber NICHT irgendwelche Kanten des Controls!)
- ' Genauso kann aber auch eine Kante angegeben werden
- ' (einfach Top, ..., eben die Kante angeben),
- ' oder eine beliebige anderehorizontale oder vertikale Linie
- ' offset ist eben der offset, gerechnet wird von der linken, oberen Ecke des Parent-Controls
- ' SnapLinePrority sollte auch angepasst werden, je nach Situation sollte hier gewählt werden, empfohlen wird aber .Medium
- Return snapLinesList
- End Get
Ich denke, die Kommentare sind relativ verständlich, deshalb hier nicht mehr dazu.
1. Hinter dem Framewok-Namen darf nicht "Client Profile" stehen (Das kann auf der Projektseite, unter "Kompilieren", und dann uten, bei den erweiterten Kompilereinstellungen geändert werden!
2. System.Design muss als Verweis importiert sein.
3. Ihr benötigt folgende Imports:
entweder per "importierte Namespaces" oder in der Datei per "Import"-Anweisung
bei der Designer-Klasse
4. In der Control-Klasse wird der folgende Import benötigt:
auch diesen entweder bei importierten Namespaces oder in der Datei selbst
2. System.Design muss als Verweis importiert sein.
3. Ihr benötigt folgende Imports:
entweder per "importierte Namespaces" oder in der Datei per "Import"-Anweisung
bei der Designer-Klasse
4. In der Control-Klasse wird der folgende Import benötigt:
auch diesen entweder bei importierten Namespaces oder in der Datei selbst
Ich hoffe, ich konnte euch helfen,
mfG,
Hermann
/Edit: Ich möchte darauf hinweisen, dass dieser Code Grösstenteils im folgenden Thread im Hauptforum ausgearbeitet und gelöst wurde:
Thread: Usercontrol anhand des Textes positionieren
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Hermann“ ()