Benutzer mit den meisten Antworten
Eigene Enum oder Structure in Property

Frage
-
Hallo zusammen,
ich bastel immer noch an meinm Control. Hier möchte ich gerne eine Property mit Folgenden Werten
Puplic Property MeineWerte As ......
Hoch
Mittel
Tief
Nun habe ich das über einen Enum und einer Structure versucht.
Ich bekomme aber in der Property nichts angezeigt.
Die StructureDeclare Structure Name of Week Day Structure UpAndDown Dim Up As String Dim Down As String End Structure Declare Variable Dim WD As UpAndDown Fill Structure Private Sub SetStructureValue() German(Entrys) With WD .Up = "Hoch" .Mid = "Mittel" .Down = "Tief" End With End Sub
geht das ?
wie bekomme ich da hin ?
vielen lieben dank
bernd- Bearbeitet Robert BreitenhoferModerator Donnerstag, 22. April 2010 06:39 Formatierung
Antworten
-
Die Frage ist ja, was Du erreichen möchtest, mit diesen Texten. Wenn Sie zur Steuerung des Programms notwendig sind und nur bestimmte zulässig sein sollen, solltest Du IMO beim Enum Ansatz bleiben. Wenn Du eine Textdarstellung für den weiteren Ablauf benötigst, kannst Du entweder den Enum sprechend beschreiben oder übersetzt die Enum Werte zu entsprechenden Zeichenfolgen:
Public Enum Directions Up Down Left Right End Enum Private Function GetTextForEnum(ByVal direction As Directions) Select Case direction Case Directions.Up Return "Aufwärts" Case Directions.Down Return "Abwärts" ... End Enum
Gibt noch andere Möglichkeiten, wie öffentliche Konstanten oder ReadOnly Felder. Aber ich denke Dir geht es mehr um die entsprechende Unterstützung via IntelliSense bzw. dem Eigenschaftenfenster.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 22. April 2010 06:41
- Bearbeitet Thorsten DörflerModerator Donnerstag, 22. April 2010 16:22 Korrektur
- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 17:36
-
Hallo Bernd,
die Werte werden über einen TypeConverter von einer Zeichenfolge in den
internen Typ umgesetzt. Im Falle von Enum ist das der EnumConverter .
Dabei werden die Werte anhand von Enum.GetNames ermittelt und angezeigt.
In den meisten Fällen sollte das reichen. Nur wenn man intern z. B.
mit englischen Bezeichnungen arbeitet und an der Oberfläche lokalisierte
(deutsch u. a. ) anzeigen will, müsste man einen eigenen Konverter schreiben.
Und wenn ich mir Deine Bezeichnungen so anschaue, könnte VerticalAlignment passen.Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 22. April 2010 07:53
- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 17:35
-
Hallo Bernd,
Du kannst auch nur Enum Werte zur Auswahl vorgeben. Mit Zeichenfolgen funktioniert das nicht.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 05:50
-
Hallo Bernd,
ich sehe hier keinen Grund, der gegen einen reinen Enum sprechen würde. Mit Zeichenfolgen/Text musst Du da nicht rumhantieren.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 17:35
Alle Antworten
-
Hi,
wenn ich dich jetzt richtig verstanden haben, dann willst du eine Property haben, wo du nur Hoch, Mittel, Tief auswählen kannst. Wenn ja, dann so:
Public Class testenum Enum Werte Hoch Tief Mittel End Enum Dim abcd As Werte Public Property XY() As Werte Get Return abcd End Get Set(ByVal value As Werte) abcd = value End Set End Property End Class
Gruß
martinwy
-
Hallo Bernd,
Du kannst auch nur Enum Werte zur Auswahl vorgeben. Mit Zeichenfolgen funktioniert das nicht.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 05:50
-
Die Frage ist ja, was Du erreichen möchtest, mit diesen Texten. Wenn Sie zur Steuerung des Programms notwendig sind und nur bestimmte zulässig sein sollen, solltest Du IMO beim Enum Ansatz bleiben. Wenn Du eine Textdarstellung für den weiteren Ablauf benötigst, kannst Du entweder den Enum sprechend beschreiben oder übersetzt die Enum Werte zu entsprechenden Zeichenfolgen:
Public Enum Directions Up Down Left Right End Enum Private Function GetTextForEnum(ByVal direction As Directions) Select Case direction Case Directions.Up Return "Aufwärts" Case Directions.Down Return "Abwärts" ... End Enum
Gibt noch andere Möglichkeiten, wie öffentliche Konstanten oder ReadOnly Felder. Aber ich denke Dir geht es mehr um die entsprechende Unterstützung via IntelliSense bzw. dem Eigenschaftenfenster.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 22. April 2010 06:41
- Bearbeitet Thorsten DörflerModerator Donnerstag, 22. April 2010 16:22 Korrektur
- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 17:36
-
Hallo Bernd,
die Werte werden über einen TypeConverter von einer Zeichenfolge in den
internen Typ umgesetzt. Im Falle von Enum ist das der EnumConverter .
Dabei werden die Werte anhand von Enum.GetNames ermittelt und angezeigt.
In den meisten Fällen sollte das reichen. Nur wenn man intern z. B.
mit englischen Bezeichnungen arbeitet und an der Oberfläche lokalisierte
(deutsch u. a. ) anzeigen will, müsste man einen eigenen Konverter schreiben.
Und wenn ich mir Deine Bezeichnungen so anschaue, könnte VerticalAlignment passen.Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 22. April 2010 07:53
- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 17:35
-
Also Konkret,
Ich bastel an einem Control welches eigentlich mehrere sind.
Nun möchte ich umschalten können zwischen
Uhr
Tachometer
DrehzalmesserInnerhalb dieser Kategorien kann dann nochmals unterschieden werden.
Damit ich aber nicht ständig Property mit True und False habe und diese mühselig gegeneinander verriegeln/sperren muss,dacht ich mir
halt die obige Lösung aus.Wie gesagt es soll in den Eigenschaften einfach Text erscheinen.
Ok ich lese mich mal durch und versuche das hinzubekommen.
vielen lieben dank
bernd
-
Hallo Bernd,
ich sehe hier keinen Grund, der gegen einen reinen Enum sprechen würde. Mit Zeichenfolgen/Text musst Du da nicht rumhantieren.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 17:35
-
genau so ähnlich dachte ich auch.
wenn ich die Property so eindeutig mache und im BeschreibungsText darauf hinweise, sollte es eigentlich klar sein.
Aber trotzdem schaue ich mir alle von euch genannten Hinweise genauer an.
danke euch wie immer
Bernd- Als Antwort markiert Bernd Schlepütz Donnerstag, 22. April 2010 17:35
- Tag als Antwort aufgehoben Bernd Schlepütz Donnerstag, 22. April 2010 17:35