edit : Structur durch Combobox aufrufen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Devilx1.

    edit : Structur durch Combobox aufrufen

    Weiteres Problem:
    ich habe mir eine structrue fahrzeuge erstellt (soll quasi als produktkatalog dienen)

    Public Structure Fahrzeuge
    Dim name As String
    Dim Personen As Integer
    Dim Fracht As Integer
    Dim verbrauch As Integer
    Dim PS As Integer
    Dim Preis As Single
    Dim Geschwindigkeit As Single
    End Structure


    jetzt füge ich manuell im programm code beim form laden dem Katalog die fahrzeuge hinzu (bzw. zz 1)

    With Fz1
    .name = "Fz1"
    .Personen = 4
    .Fracht = 100
    .Geschwindigkeit = 150
    .PS = 75
    .Preis = 50000
    End With

    jetzt habe ich auf meiner form eine combobox der text des combobox intems ist jeweils der name bzw die variable von fahrzeug.

    wenn ich nun in der combobox fz1 auswähle soll er mir automatisch die eigentschaften in nem label ausgeben

    problem dabei: um für die ausgabe jetzt nicht alle fälle abdecken zu müssen also:
    if ..... fz1
    lbl.text = fz1.name & fz1.preis.......
    if ..... = fz2
    lbl.text = fz2.name .....

    will ich das er die variable fz1 autoamatisch anhand des comboboxeintrags erkennt so das ich die ausgabe mit

    lbl.text = x.name & x.preis

    autmoatisieren kann.

    leider funktioniert es nicht so einfach wie mit :

    Dim x As Fahrzeuge

    x = CmbFahrzeuge.Text

    lblFzInfoAusgabe.Text = x.name

    gibt dann ein konvertierungs fehler da ich den string aus dem text der kombobox nicht allgemein auf x speichern kann sondern wieder nur auf nem speziellen x wie x.name ....... das bringt mich dann allerdings genausoweit ^^

    die richtigen worte für google langen mir auch statt großer erklräung ^^ weiß nich genau nach was ich suchen soll.... den fehler selbst habsch auch gegooglet und was der bedeutet is mir klar aber wie ich das "automatische erkennen und ausgeben" dann umsetz mit der structur ist mir net klar .........

    thx 4 help

    GELÖST:
    edit:das forum habe ich bereits vergeblich durchsucht bzw nach dem falschen gesucht warscheinlich^^
    Hi Leute,

    da ich ich eigentlich in pascal gelernt habe mich nun aber umorientieren möchte wollte ich en kleines game "wie so viele andere ;) " schreiben.

    stoße dabei auf ein sicherlich recht einfaches problem:

    ich möchte natürhrlich auch gern ne Spieluhrzeit haben die wie unsere normale zeit abläuft und angezeigt wird, nur eben schneller.

    das ich warscheinlich einen timer verwenden sollte und wie ist mir schon klar das problem das sich bei mir ergibt ist:

    sind minuten oder stunden oder sekunden kleiner als 10 soll "die zählvariable" (so mach ich das normal in pascal weils da nix komfortables gibt) bei der anzeige eine 0 vortalufend haben also eben 01:01:01 bzw 10:10:10

    das normal raufzählen lassen is kein thema aber die formatierung 1:2:30 is als ausgabe nicht sonderlich hübsch.


    wie kann ich das nun realisieren,ohne mit 6 if stamentents oder der gleichen zu arbeiten um jeden fall abzufangen und ne eigene ausgabe unter jedes statement zu setzetn ? sicher gibt es in vb hierfür eine recht komfortable möglichkeit die ich nur noch nciht kenne ;)

    dank euch vorab

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

    hi das mach ich gerne mich selbst belesen mir fehlt nur der passende string für google ich habe bisher nichts was mir hilft gefunden ;)

    sag ja warscheinlich nach dem falschen gesucht also für "suchworte" die mir da weiterhelfen bin ich auch dankbar
    eine möglichkeit wäre die anzeige in drei Strings zu splitten

    stunden; minuten; sekunden

    Die drei strings werden dann per Select case überprüft, falls eine variable niedriger als 10 ist, also 9 - 1 so wird dem string eine 0 vorrausgesetzt und die aktuelle ziffer addiert, also 01 - 09.
    hi was ähnliches habe ich bereits gemacht (is jezt schon die ka wievielte formulierung warscheinlich hab ich zwischendurch nur noch unsinnig verschlimmbessert):

    If sekunden > 59 Then
    minuten = minuten + 1
    sekunden = 0
    End If
    If minuten > 59 Then
    stunden = stunden + 1
    minuten = 0
    If stunden > 23 Then
    stunden = 0
    End If
    End If
    If sekunden <= 9 And minuten <= 9 Then
    lblUhrzeitAnzeige.Text = "0" & stunden & ":0" & minuten & ":0" & sekunden
    ElseIf minuten <= 9 And stunden <= 9 Then
    lblUhrzeitAnzeige.Text = "0" & stunden & ":0" & minuten & ":" & sekunden
    ElseIf stunden < 9 Then
    lblUhrzeitAnzeige.Text = "0" & stunden & ":" & minuten & ":" & sekunden


    End If


    End Sub


    wie man hier gut sehen kann gehts in die richtige richtung aber sobald die minuten 10 erreichen fehlt nat.die fortlaufende null bei den sekunden ^^

    hab schon en paar strukturen versucht finde aber grade null die passende um jetzt nicht 3² abzufragen und somit für jeden fall eine seperate ausgabe zu formulieren

    lässt sich ja sicher einfacher realisieren bei pascal wäre das kein problem da der couser an der stelle stehen bleibt und die folgende zahl hinten dran kommt das kann ich hier ja nicht da ich ja immer das gesamte label anspreche...

    naja hoffe ihr versteht " mein sicherlich recht banales probelm"

    thx 4 help
    Hi hab mein problem gelöst , wäre aber auch für ne "schönere lösung dankbar" .. das lässt sich nämlich sicher auch knapper formulieren als :

    If stunden < 10 Then
    lblUhrzeitAnzeige.Text = "0" & stunden
    Else
    lblUhrzeitAnzeige.Text = stunden
    End If
    If minuten < 10 Then
    lblUhrzeitAnzeige.Text &= ":0" & minuten
    Else
    lblUhrzeitAnzeige.Text &= ":" & minuten
    End If
    If sekunden < 10 Then
    lblUhrzeitAnzeige.Text &= ":0" & sekunden
    Else
    lblUhrzeitAnzeige.Text &= ":" & sekunden
    End If


    das &= löste mein problem da es dadurch direkt nach dem letzten zeichen weitergeht ^^ wusste ich nicht
    "Select Case", "Split", "If then orgie" ...

    sigh ...
    Leutz! Mal ein bißchen in den klassen des Frameworks stöbern!!!

    VB.NET-Quellcode

    1. Dim t As String = New TimeSpan(1, 2, 3).ToString
    2. Debug.Print(t)

    Ausgabe: 01:02:03
    (Eigentlich ist das ein EINZEILER!)