String als Object-Name

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    String als Object-Name

    Guten Abend,

    habe mal wieder ein problemchen :D

    Ich bekomme über eine com-Schnittstelle einen Sensorwert ausgegeben.
    Diesen ("8#P#0") habe ich schon mit der Split Funktion auseinander genommen sodass ich jetzt die Werte
    [Sensor_Nummer: 8 - Sensor_Modul: P - Sensor_Wert: 0]
    ausgegeben bekomme.
    Nun zu meinem Problem.
    Je nachdem, ob der Wert 1 oder 0 ist, soll der Hintergrund zum Passenden Label ("Label_8_P") Rot bzw. Grün sein.
    Gibt es da eine halbwegs elegante Lösung, um das zu realisieren?
    Wenn ich die parts aus dem split array einfach wieder zusammen setzte, habe ich ja immer noch einen string... da kann ich ja keine hintergrundfarbe setzen, oder :D?
    Wenn 0 zu grün und 1 zu rot führen soll, dann sollte es doch ziemlich klar sein, wie das in Code gepresst wird. Klingt zumindest einfach. Eine Möglichkeit

    VB.NET-Quellcode

    1. Label1.BackColor = If(Value = 1, System.Drawing.Color.Red, System.Drawing.Color.Green)

    Dabei muss der Variable Value der Wert zugewiesen werden. Aber wenn Du den String splitten kannst, kannst Du auch der Variable den Wert zuweisen. Notfalls über Integer.Parse("0"). Oder eben so in der Art. Wenn wir ein wenig (Split-)Code sehen würden, könnte man konkreter werden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Der Split Code ist einfach nur

    Quellcode

    1. Sensor = receivedData
    2. Dim parts = Split([Sensor], "#")


    Das Problem ist, dass das nachher für 30 Labels und 30 verschiedene Sensoren läuft...
    Hab keinen bock da ne riesen abfrage draus zu bauen, wenn es nicht unbedingt nötig ist
    Ah, gut zu wissen, dass es um so viele CEs geht. Dann entweder über den Label-Namen eine Zuordnung machen (Sensor 23 bedient Label23) (dieser Weg ist etwas einengend) oder die Labels dynamisch erzeugen und in einer List(Of Label) zusammenpferchen und die Sensordaten an das Label mit dem jeweiligen List-Index weitergeben. Dritter Weg: Die Labelproperty Tag mit Identitätsdaten füllen und so eine Sensordatenzuordnung erreichen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    4.Weg: Weg von eigenen Controls je Sensor.
    Stattdessen eine ordentliche Datenverarbeitung programmieren.
    Daten ggfs. im Datagridview anzeigen - da kann man hunderte von Datensätzen anzeigen, kann zufügen, ändern löschen - alles sachen, bei denen man mit generierten Controls schnell in Schwulitäten kommt.
    Vollzitat entfernt. ~Trade
    Das ist aber Viel zu unübersichtlich...
    Das ziel ist es, dass alle Sensordaten auf einen Blick erkannt werden können...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    Anubis153 schrieb:

    Das ist aber Viel zu unübersichtlich...
    Dann mach doch mal einen Screenshot, WIE das UI deiner Meinung nach ausehen soll, sodass man alles "übersichtlich" sehen kann.
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Ein DataGridView kann man größentechnisch und inhaltlich sehr gut anpassen kann. Außerdem muss man ja nicht alle Sensordaten in einem DGV in eine neue Zeile schreiben, sondern z.B. in 6x5 Zeilen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Anubis153 schrieb:

    für 30 Labels und 30 verschiedene Sensoren
    Zunächst poste eine vollständige und belastbare Problembeschreibung / Aufgabenstellung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Anubis153 schrieb:

    ErfinderDesRades schrieb:

    4.Weg: Weg von eigenen Controls je Sensor.
    Stattdessen eine ordentliche Datenverarbeitung programmieren.
    Daten ggfs. im Datagridview anzeigen... sonst Schwulitäten ...
    Das ist aber Viel zu unübersichtlich...
    Das ziel ist es, dass alle Sensordaten auf einen Blick erkannt werden können...
    Wieso sollten sie in einem Datagridview nicht auf einen Blick erkannt werden könnnen?
    Immerhin ist das ein gangbarer Weg, ob das mit den generierten Controls gangbar ist, steht noch in den Sternen.
    @Anubis153 Probier doch einfach mal, eine GUI in Paint zu malen, wie Du Dir das vorstellst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!