aus Combobox variable generieren

  • VB.NET
  • .NET 4.5

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 74 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    aus Combobox variable generieren

    Hi Leute, ich habe mal wieder eine Frage worauf ich zu keiner Lösung komme.

    Ich habe eine Combobox in der verschiedene Werte zu Auswahl stehen. Nehmen wir einfach

    Wert1
    Wert2
    Wert3

    ich habe verschiedene Variablen deklariert als Integer <- ja integer ist richtig. die sehen so aus

    intWert1bla as Integer = 1
    intWert2bla as Integer = 2
    intWert3bla as Integer = 3

    CmbBoxWert as String


    Beispiel:

    Ich Wähle Wert1 aus, dann möchte ich, dass CmbBoxWert auch die 1 erhällt von intWert1bla as Integer = 1. Wähle ich Wert3, möchte ich den Wert von intWert3bla as Integer = 3

    in kurzform: Combobox Wert auswählen, dadurch die passende Variable zuordnen.

    Es sind leider sehr viele Werte als integer deklariert > 1000 ... d.h. ich benötige einen automatismus, dass durch die auswahl der cmbbox bestimmte variablen automatisch benutzt werden.

    Jmd ne Idee? :)
    Hi,

    die Combobox nimmt jedes Object an. Du kannst auch Integer-Werte einfügen. Bei Benutzung musst Du nur entsprechend casten, da die Combobox nur Objects zurückgibt. Oder Du bindest eine List of Integer an die Comboxbox als Datasource.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    How to turn OPTION STRICT ON
    Why OPTION STRICT ON
    @r0tzi Wie wäre es, wenn Du statt der Variablen Enums verwenden würdest, Form, Combobox1, Label1:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Enum MyValues
    3. Montag
    4. Dienstag
    5. Mittwoch
    6. Donnerstag
    7. Freitag
    8. Samstag
    9. Sonntag
    10. End Enum
    11. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    12. ComboBox1.DataSource = [Enum].GetNames(GetType(MyValues))
    13. End Sub
    14. Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    15. Dim val As MyValues
    16. If Not [Enum].TryParse(ComboBox1.Text, val) Then
    17. Label1.Text = "nix"
    18. Return
    19. End If
    20. Label1.Text = val.ToString
    21. ' mit val was tun
    22. End Sub
    23. End Class
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Nein so meine ich das nicht. ok hab mal ein konkretes beispiel aufgebaut.

    Block 1
    Public intAatroxDMG As Integer = 6
    Public intAatroxTNK As Integer = 1
    Public intAatroxSTUN As Integer = 1
    Public intAatroxSlow As Integer = 1
    Public intAatroxCC As Integer = 0
    Public intAAtroxTrue As Integer = 0

    Block 2
    Public intahriDMG As Integer = 7
    Public intahriTNK As Integer = 1
    Public intahriSTUN As Integer = 1
    Public intahriSlow As Integer = 0
    Public intahriCC As Integer = 0
    Public intahriTrue As Integer = 1

    Block 3
    Public intakaliDMG As Integer = 9
    Public intakaliTNK As Integer = 2
    Public intakaliSTUN As Integer = 0
    Public intakaliSlow As Integer = 0
    Public intakaliCC As Integer = 0
    Public intakaliTrue As Integer = 0

    es kommen noch über 100 Blöcke hinzu...

    so nun habe ich noch einmal 6 Variablen für die "Combobox"

    Public OwnDmg1 As Integer
    Public OwnTNK1 As Integer
    Public OwnCC1 As Integer
    Public OwnSlow1 As Integer
    Public Ownstun1 As Integer
    Public Owntrue1 As Integer

    nun möchte ich, wenn ich den Wert "Aatrox" in der Combo auswähle, dass die "Own..." variablen mit den integerwerten von int"Aatrox"usw belegt werden.

    Wähle ich Ahri aus, sollen die OWN variablen mit den Integerwerten von int"Ahri"usw belegt werden.

    Das mit Dataset habe ich mir angeschaut, habe auch das Tut von ErfinderdesRades angeschaut... ganz ehrlich, ich blicks einfach nicht.... wollte mir so art excel tabelle damit bauen... aber ich checks einfach 0,0....
    @r0tzi Sind die Variablen der Blöcke konstant?
    Welche Texte befinden sich in der Combobox?
    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).
    VB-Fragen über PN / Konversation werden ignoriert!

    r0tzi schrieb:

    Ja sind konstant
    Dann pack sie in ein Enum.
    Zurück zu Post #3.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    ich kenn enum nicht ;/

    nun mir ist schon klar was es macht, aber ich wüsste jetzt nicht wie, wenn ich Ahri auswähle, dass ich aus dem Enum die 6 variablen
    Public intahriDMG As Integer = 7
    Public intahriTNK As Integer = 1
    Public intahriSTUN As Integer = 1
    Public intahriSlow As Integer = 0
    Public intahriCC As Integer = 0
    Public intahriTrue As Integer = 1

    herausbekomme und dann in

    Public OwnDmg1 As Integer
    Public OwnTNK1 As Integer
    Public OwnCC1 As Integer
    Public OwnSlow1 As Integer
    Public Ownstun1 As Integer
    Public Owntrue1 As Integer

    reinpacke sodass ich am ende

    OwnDmg1 = 7
    OwnTNK1 1
    OwnCC1 = 1
    OwnSlow1 = 0
    Ownstun1 = 0
    Owntrue1 = 1

    habe :-/

    r0tzi schrieb:

    ich kenn enum nicht ;/
    ;(

    VB.NET-Quellcode

    1. Enum MyValues
    2. Montag = 1
    3. Dienstag = 2
    4. Mittwoch = 3
    5. Donnerstag = 4
    6. Freitag = 5
    7. Samstag = 6
    8. Sonntag = 7
    9. End Enum
    10. Dim Value As Integer = CInt(MyValues.Donnerstag)
    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).
    VB-Fragen über PN / Konversation werden ignoriert!

    r0tzi schrieb:

    also so geht es nicht
    Das ist korrekt.
    Den laufenden Code hast Du von mir bekommen.
    Du müsstest das ganze also zunächst verstehen und dann ggf. Dein Konzept darauf hin umstellen, wenn das möglich ist.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @r0tzi Erläutere vielleicht noch mal etwas detaillierter, was da ablaufen soll.
    Vielleicht machst Du ein kleines Codebeispiel mit 3 verschiedenen Werten / Wertepaaren.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Wie kommen eigentlich diese Blöcke in Dein Programm? Was sind die Blöcke strukturell, wenn man von den 6 Integer-Variablen absieht? Wo kommt denn der Block her und wo unter? Liest Du die aus ner Textdatei aus oder sind die dauerhaft in Deinem Programm schon drin?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― Eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    ― If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    ― »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«
    Man du machst es dir aber schwer. Combobox hat doch eine SelectedIndex Property. Von oben angefangen 0 basiert. Also wenn du den 1. wert auswählst ist der SelectedIndex 0. Das kannst du dir zu hilfe nehmen.

    C#-Quellcode

    1. private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    2. {
    3. MessageBox.Show(comboBox1.SelectedIndex.ToString());
    4. }
    Hier könnte meine Signatur stehen.
    @mox: Und wie machst Du dann die Variablenzuordnung, wenn die Quellvariablen alle einen anderen Namen haben?
    Ich glaube, dass wir einfach noch zuwenig über das Projekt wissen, um gezielte Hilfe zu leisten. Woher kommen die Variablennamen, Werte, Blöcke? Wer legt wie wo fest, welcher "Block" gerade aktuell ist. Und was zum Geier versteht der TE unter "Block" überhaupt konkret? Nur die 6 Variablen? Oder doch mehr? Woher kommt der Blockname?
    ...
    Ach, ich wiederhol mich.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― Eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    ― If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    ― »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«
    Diese Blöcke sind im globalen modul drin und habe ich erstellt manuell. die bleiben da auch drin.

    nun es soll eine berechnung stattfinden mit den integer zahlen die hinter den blöcken stehen. da je nach auswahl in der combobox (insgesamt 10 boxen) die namen variieren, muss ich jedesmal diese werte aus den blöcken holen dass ich damit rechnen kann.och könnte nun nun select case machen die so aussieht:
    case 0
    owndmg1 = intahriDMG
    OwnTNK1 = intahriTNK
    OwnCC1 = intahriCC
    OwnSlow1 = intahrislow
    Ownstun1 = intahristun
    Owntrue1 = intahritrue

    nur dann hätte ich 136 Cases :-/ der code wird ellenlang und ich bin danach blind :P

    Block setzt sich zusammen aus:

    "int" + "Name" +"zusatz"

    Der name wird in der combo ausgewählt.. und ich möchte die integerwerte zur berechnung nutzen, die zumausgewählten namen der combobox passen ;)

    r0tzi schrieb:

    nur dann hätte ich 136 Cases
    dann mach mal noch zwei weitere Cases.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    so könnte es aussehen * 136 :D

    Select Case CmbBoxOwn1.SelectedIndex
    Case 0 : CmbBoxOwn1.SelectedItem = "Aatrox"
    OwnDmg1 = intAatroxDMG
    OwnTNK1 = intAatroxTNK
    OwnSlow1 = intAatroxSlow
    Ownstun1 = intAatroxSTUN
    Owntrue1 = intAAtroxTrue
    OwnCC1 = intAatroxCC
    Case 1 : CmbBoxOwn1.SelectedItem = "Ahri"
    OwnDmg1 = intahriDMG
    OwnTNK1 = intahriTNK
    OwnSlow1 = intahriSlow
    Ownstun1 = intahriSTUN
    Owntrue1 = intahriTrue
    OwnCC1 = intahriCC
    Case 2 : CmbBoxOwn1.SelectedItem = "Akali"
    OwnDmg1 = intakaliDMG
    OwnTNK1 = intakaliTNK
    OwnSlow1 = intakaliSlow
    Ownstun1 = intakaliSTUN
    Owntrue1 = intakaliTrue
    OwnCC1 = intakaliCC
    Case 3 : CmbBoxOwn1.SelectedItem = "Alistar"
    OwnDmg1 = intalistarDMG
    OwnTNK1 = intalistarTNK
    OwnSlow1 = intalistarSlow
    Ownstun1 = intalistarSTUN
    Owntrue1 = intalistarTrue
    OwnCC1 = intalistarCC
    Case 4 : CmbBoxOwn1.SelectedItem = "Amumu"
    OwnDmg1 = intamumuDMG
    OwnTNK1 = intamumuTNK
    OwnSlow1 = intamumuSlow
    Ownstun1 = intamumuSTUN
    Owntrue1 = intamumuTrue
    OwnCC1 = intamumuCC
    End Select
    @r0tzi: Du hast echt über 800 Variablen in Deinem Programm? Wenn ja, dann wäre der Einsatz von OOP langsam sinnvoll, oder? Oder zumindest eine andere Art von sinnvoller Strukturierung.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― Eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    ― If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    ― »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«