Combox - Auswahl wird falsch deklariert

  • VB.NET
  • .NET (FX) 4.0

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Mütze.

    Combox - Auswahl wird falsch deklariert

    Einen angenehmen Samstag für alle.
    Irgendetwas ist bei meiner Programmierung falsch gelaufen. Siehe späteren Anhang. Bei meinem Kurs sollten wir eine kleine Anwendung erstellen, diese Aufgabe war problemlos,
    nun wollte ich diese Anwendung weiter ausbauen und hier habe ich Probleme mit dem Eintragen des ausgewählten Items der ComboBox in eine andere Form Namens "plan". Ich füge Euch mal den Code an und auch die
    Fehlermeldung:

    Der fehlerhafte Code:

    VB.NET-Quellcode

    1. Option Explicit On
    2. Public Class Termne_Sarah
    3. Private Sub Termne_Sarah_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. 'Erstellung einer Anwendung über den Wochenplan von Sarah mit Ihren Interessen. Hier habe ich ComboBoxen verwendet
    5. 'da sich die Tätigkeiten ändern oder ausfallen könnten. Gleichfalls habe ich die Kilometer und den zugrunde
    6. 'gelegten Literpreis für eine Kalkulation genommen, welche auf dem Fenster _plan ersichtlich sind.
    7. 'Eigentlich hatte ich noch vor, einen Wecker zu integrieren, sowie die Datumsangaben per _Button auf der Form _plan anzeigen zu lasssen.
    8. 'Und natürlich einen Butto zum Drucken, damit die Tochter die Form Sarah ausdrucken kann.
    9. 'Diese Anwendung habe ich zum Spass gemacht und dient zu meiner Übung. Eine Entwicklung bringt ja auch sehr viel Spass.
    10. 'F. Mütze 2017
    11. 'Veränderung der Hintergrundfarbe per _Code
    12. btn_ueber_sonn.BackColor = Color.PowderBlue
    13. Me.BackColor = Color.PapayaWhip
    14. End Sub
    15. Private Sub btn_ueber_sonn_Click(sender As Object, e As EventArgs) Handles btn_ueber_sonn.Click
    16. 'Übergabe der Tätigkeit in Form_plan über die ComboBoxen. Vorher Abfrage ob Comboboxen gefüllt sind.
    17. If cb_montag.Text = "" Then
    18. MessageBox.Show("Bitte füllen Sie den Montag aus", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    19. End If
    20. If cb_dienstag.Text = "" Then
    21. MessageBox.Show("Bitte füllen Sie den Dienstag aus", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    22. End If
    23. If cb_mittwoch.Text = "" Then
    24. MessageBox.Show("Bitte füllen Sie den Mittwoch aus", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    25. End If
    26. If cb_donnerstag.Text = "" Then
    27. MessageBox.Show("Bitte füllen Sie den Donnerstag aus", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    28. End If
    29. If cb_freitag.Text = "" Then
    30. MessageBox.Show("Bitte füllen Sie den Freitag aus", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    31. End If
    32. If cb_samstag.Text = "" Then
    33. MessageBox.Show("Bitte füllen Sie den Samstag aus", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    34. End If
    35. If cb_sonntag.Text = "" Then
    36. MessageBox.Show("Bitte füllen Sie den Sonntag aus", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    37. 'Abfrage ob die Comboboxen gefüllt sind.
    38. ElseIf CStr(cb_montag.SelectedItem) & CStr(cb_dienstag.SelectedItem) & _
    39. CStr(cb_mittwoch.SelectedItem) & CStr(cb_donnerstag.SelectedItem) & CStr(cb_freitag.SelectedItem) & _
    40. CStr(cb_samstag.SelectedItem) & CStr(cb_sonntag.SelectedItem) Then
    41. plan.lbl_montag.Text = cb_montag.Items(cb_montag.SelectedIndex).ToString()
    42. plan.lbl_dienstag.Text = cb_dienstag.Items(cb_dienstag.SelectedIndex).ToString()
    43. plan.lbl_mittwoch.Text = cb_mittwoch.Items(cb_mittwoch.SelectedIndex).ToString()
    44. plan.lbl_donnerstag.Text = cb_donnerstag.Items(cb_donnerstag.SelectedIndex).ToString()
    45. plan.lbl_freitag.Text = cb_freitag.Items(cb_freitag.SelectedIndex).ToString()
    46. plan.lbl_samstag.Text = cb_samstag.Items(cb_samstag.SelectedIndex).ToString()
    47. plan.lbl_sonntag.Text = cb_sonntag.Items(cb_montag.SelectedIndex).ToString()
    48. Me.Hide()
    49. plan.Show()
    50. End If


    Der Fehler muss allerdings an der Übergabe in die Form plan liegen: Hier auch der Code:

    VB.NET-Quellcode

    1. Public selected As Double
    2. Private Sub cb_montag_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cb_montag.SelectedIndexChanged
    3. 'auslesen der Tätigkeiten aus der ComboBOX - km eintragen nebst dem Verbrauch in Litern.
    4. Select Case cb_montag.SelectedItem.ToString()
    5. Case CStr("Handballtraining, Mützestr. 23, Große Halle, 23 km")
    6. selected = 23
    7. Case "Klavierstunde, Gnatztantenstr. 376, Teezimmer, 11 km"
    8. selected = 11
    9. Case "Reiten, Hulahoppstr. 54, Kleine Halle, 14 km"
    10. selected = 14
    11. Case "Rudern, Wasserseestr. 12, Wildwaasserstrudel, 34 km"
    12. selected = 34
    13. Case "Mathenachhilfe, Blödelstr. 897, Tafelzimmer, 8 km"
    14. selected = 8
    15. Case "Fahrt zur Freundin, 13,5 km"
    16. selected = 13.5
    17. Case "Fahrt in die Disko, 21,8 km"
    18. selected = 21.8
    19. Case "Samstag vielleicht frei oder Stubenarrest, 0 km"
    20. selected = 0
    21. Case "Sonntag vielleicht frei oder Stubenarrest, 0 km"
    22. selected = 0
    23. Case "Samstag Freizeit, 0 km"
    24. selected = 0
    25. Case "Sonntag Freizeit, 0 km"
    26. selected = 0
    27. Case "ausschlafen, 0 km"
    28. selected = 0
    29. Case "krank trotz Daymed!!!!!, 0 km"
    30. selected = 0
    31. Case "Ferien in Hamburg, 0 km"
    32. selected = 0
    33. End Select
    34. tb_km_mo.Text = selected.ToString()
    35. tb_verb_mo.Text = 0.15
    36. End Sub


    Ich habe mal ein Bild der Fehlermeldung angehängt. Obwohl ich der Meinung bin, das ich die Items als String deklariert habe, erscheint die folgende auf dem Bild sichtbare Fehlermeldung.


    Hätte ich vielleicht mit Select Case arbeiten sollen?

    Vielleicht kann mir ja jemand weiter helfen.

    Grüße aus Wentorf
    Mütze
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    Nimm mal anstatt SelectedItem, SelectedText der Combobox dann brauchst du keine konvertierung in Cstr. Ausserdem würde ich eine neue Instanz der Form plan erstellen und anzeigen.
    Ausserdem ist diese If Anweisung falsch:

    VB.NET-Quellcode

    1. If cb_sonntag.Text = "" Then
    2. MessageBox.Show("Bitte füllen Sie den Sonntag aus", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    3. 'Abfrage ob die Comboboxen gefüllt sind.
    4. ElseIf CStr(cb_montag.SelectedItem) & CStr(cb_dienstag.SelectedItem) & _
    5. CStr(cb_mittwoch.SelectedItem) & CStr(cb_donnerstag.SelectedItem) & CStr(cb_freitag.SelectedItem) & _
    6. CStr(cb_samstag.SelectedItem) & CStr(cb_sonntag.SelectedItem) Then
    7. plan.lbl_montag.Text = cb_montag.Items(cb_montag.SelectedIndex).ToString()
    8. plan.lbl_dienstag.Text = cb_dienstag.Items(cb_dienstag.SelectedIndex).ToString()
    9. plan.lbl_mittwoch.Text = cb_mittwoch.Items(cb_mittwoch.SelectedIndex).ToString()
    10. plan.lbl_donnerstag.Text = cb_donnerstag.Items(cb_donnerstag.SelectedIndex).ToString()
    11. plan.lbl_freitag.Text = cb_freitag.Items(cb_freitag.SelectedIndex).ToString()
    12. plan.lbl_samstag.Text = cb_samstag.Items(cb_samstag.SelectedIndex).ToString()
    13. plan.lbl_sonntag.Text = cb_sonntag.Items(cb_montag.SelectedIndex).ToString()
    14. Me.Hide()
    15. plan.Show()
    16. End If
    17. Elseif bezieht sich nur auf If cb_sonntag.Text = "" Then....
    18. und du möchtest ja Alle cb abfragen.
    19. Der Fehler liegt ausserdem darin, dass du die cb auf ein Boolean abfragst denn If CStr(cb_montag.SelectedItem) bedeutet wenn cb_montag..SelectedItem True ist und das ergibt ja keine Sinn. Frag lieber ob der SelctedText nicht nothing ist.
    20. MFG

    Hier könnte meine Signatur stehen.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „mox“ ()

    1. In deinem ElseIf CStr(cb_montag.SelectedItem) fehlt ein Vergleich wie

    If CStr(cb_montag.SelectedItem) = "" Then
    'DoStuff
    End If

    2. Deine Form Plan wird nicht instanziiert.
    Dim p As New Plan
    P.Show()

    3. plan.lbl_sonntag.Text ist dirty, man greift nicht auf Controls einer anderen Form zu. Wenn, dann übergibt man der Form Daten die dann dort verarbeitet werden.

    4. Mach mal Option Strict On
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

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

    Mütze schrieb:

    Vielleicht kann mir ja jemand weiter helfen.
    Kurz gesagt steht in Deinem Code:

    VB.NET-Quellcode

    1. ElseIf "Roulade mit Klößen" Then
    Fang an mit Option Strict On.
    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!
    Vielen Dank für die hilfreichen Antworten. Ich werde die Ratschläge mal versuchen, bzw alles einwenig umschreiben.
    @ moc, vielen Dank für die Tipps, genauso von mrMo. Bei Euch beiden wird wenigstens in der Form angeboten um alles nocheinmal zu berdenken.

    @RodFromGermany - sicher hast Du den Bereich VBnet drauf. Ich daür kann Dir, glaube ich im Flash oder Java, noch etwas vormachen. Anstatt dem User hier mal einen Denkanstoss zu geben, kommen nur arrogante Antworten von Dir, wie Roulade mit Klößen. Ich denke auch, du solltest die Etkette hier wahren und vielleicht von Deinem hohen Ross einwenig runter steigen und auch den Anfängern zumindest mit Denkanstössen zur Seite stehen. Jeder hat mal klein angefangen, du auch und warst auf die Hilfe der "Cracks" angewiesen. Trotz alledem habe ich Deine Antwort als hilfreich eingeschätzt, da ein gewisser Kauderweltsch hinter meiner Programmierung steht. Nur, wie geschrieben, wäre es manchmal hilfreich einen kleinen Anstoss zu geben - in der Bemerkung - ich würde es vielleicht so oder so machen, oder schaue doch mal, vielleicht kann hier der Fehler liegen.

    Liebe Grüße aus Wentorf
    Mütze
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    @Mütze Rod hat dir deinen Code übersetzt um zu zeigen, dass da ein Vergleich fehlt. Das er das über "Roulade mit Klößen" macht, ist einfach nur nen joke ;)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Mütze schrieb:

    ... habe ich Deine Antwort als hilfreich eingeschätzt,...
    Wieso?
    Sie war dir doch noch garnet hilfreich.
    Oder hast du inzwischen Option Strict On gemacht?
    Weil das ist das Wichtige, und erst wenn das angekommen (und umgesetzt!!) ist, war der Post hilfreich, und zwar sehr.

    mrMo schrieb:

    ...zeigen, dass da ein Vergleich fehlt,...
    genau - und das ist ein Fehler, an dem man erkennt, dass du Strict Off proggst - weil bei Strict On hätte sowas garnet passieren können.
    Daher immer Option Strict On stellen. Und unbedingt auch den Microsoft.VisualBasic - GeneralImport in den Projekteigenschaften entfernen.
    Diese beiden Dinge sind jetzt das Wichtigste, sonst programmierst du mit einer Sprache, die dich behindert und "dumm" hält, indem sie das TypSystem vor dir quasi verbirgt.

    Man kann diese Vb.net-"Erbsünde" nicht ganz ausrotten, aber immerhin zu wohl 90% - und das sollte man auch unbedingt tun, grad als Einsteiger.
    Hier Anleitung dazu:
    Visual Studio - Empfohlene Einstellungen

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

    Mütze schrieb:

    Anstatt dem User hier mal einen Denkanstoss zu geben, kommen nur arrogante Antworten von Dir, wie Roulade mit Klößen.
    Wenn Du mir in Java was vormachen kannst (das kannst Du ganz gewiss ;) ), wirst Du meinen Rouladen-Snippet innerhalb einer halben Sekunde verstehen.
    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!
    Hallo @ ErfinderDesRades,
    na klar, das habe ich und... hat sehr geholfen. Insgesamt waren die Beiträge sehr hilfreich und danke für Deinen Link. Das Projekt habe ich gerade fertig gestellt und läuft. Den Linkhabe ich mir in die Lesezeichen gesetzt und werde ihn auch in Ruhe durchgehen.

    @ Rod
    deshalb fand ich Deine Antwort auch hilfreich. Doch gelegentlich hast Du einen kleinen Hang zu einer gewissen "Überheblichkeit", dies liest man ja in diversen Antworten von Dir. Ich persönlich würde einem blutigen Anfänger sicherlich auch keinen kompletten Code zum Kopieren vor die Füße werfen, er sollte schon nachdenken und seinen bisherigen Code posten. Aber dennoch möchte ich mich trotz allem für die "Rouladen" bedanken. Manchmal hängt ja auch hinter einer Antwort etwas tief Sinnigeres. Danke.... ;)
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen