Inhalt der Combobox verschwindet

  • VB.NET

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

    Inhalt der Combobox verschwindet

    Hallo zusammen,
    ganz untenstehender Code funktioniert soweit(bin noch nicht allzu lange dabei, und bin für jeden Verbesserungsvorschlag dankbar!)!
    Jetzt möchte ich aber aus:

    VB.NET-Quellcode

    1. 'Nachweise-Label füllen:
    2. lbl_VM.Text = cmb_Verbindungsmittel.SelectedItem.ToString & ", " & cmb_Stahlsorte.SelectedItem.ToString
    3. End Sub
    4. End Class

    folgendes machen:

    VB.NET-Quellcode

    1. 'Nachweise-Label füllen:
    2. lbl_VM.Text = cmb_Verbindungsmittel.SelectedItem.ToString & ", " & cmb_Stahlsorte.SelectedItem.ToString & ", d = " & cmb_Stabdübel_Durchmesser.SelectedItem.ToString
    3. End Sub
    4. End Class


    Dann füllt sich die cmb_Stabdübel_Durchmesser gar nicht mehr und die cmb_Stahlsorte zeigt nur noch das angewählte Item.
    Wenn ich nun die cmb_Verbindungsmittel-Auswahl ändere, kommt folgender Fehler: NullReferenceException wurde nicht behandelt.

    Was mache ich falsch, bzw. wo liegt mein Denkfehler?!

    Ich hoffe, irgendjemand hier hat die Muße, sich das mal anzugucken...

    Hier der komplette Code:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class frm_Laschenanschluss1
    3. Private spalten As String()
    4. 'Hier wird der pfad ermittelt, wo Projekt liegt:
    5. Private startpfad As String = Application.StartupPath.ToString
    6. 'Statt 9 Zeichen abzuziehen,könnte ich auch die Textdateien in den StartupPath (Pfad mit der .exe) legen - ist vielleicht besser...:
    7. Private pfad As String = startpfad.Substring(0, startpfad.Length - 9)
    8. Private MaterialartReader As String() = File.ReadAllLines(Path.Combine(pfad, "Materialart.txt"))
    9. Private LHReader As String() = File.ReadAllLines(pfad & "LH.txt")
    10. Private NHReader As String() = File.ReadAllLines(pfad & "NH.txt")
    11. Private BSHReader As String() = File.ReadAllLines(pfad & "BSH.txt")
    12. Private VMReader As String() = File.ReadAllLines(Path.Combine(pfad, "Verbindungsmittel.txt"))
    13. Private StabDübelStahlgüteReader As String() = File.ReadAllLines(pfad & "Stahlsorte-Stabdübel.txt")
    14. Private StabDübelDurchmesserReader As String() = File.ReadAllLines(pfad & "Stabdübel-Durchmesser.txt")
    15. Private BolzenklasseReader As String() = File.ReadAllLines(pfad & "Festigkeit-Bolzen-Passbolzen-Gewindestangen.txt")
    16. Private Sub frm_Laschenanschluss1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    17. 'Startfenster maximieren
    18. Me.WindowState = FormWindowState.Maximized
    19. 'panel an Formulargrösse anpassen
    20. pnl_links.Height = Me.Height - MenuStrip1.Height - 38 '38 wegen des Formularrahmens
    21. 'comboboxen füllen und Wert anzeigen:
    22. cmb_NKL.SelectedIndex = 1
    23. cmb_KLED.SelectedIndex = 4
    24. For Each line As String In MaterialartReader
    25. cmb_Materialart1.Items.Add(line)
    26. cmb_Materialart2.Items.Add(line)
    27. Next
    28. cmb_Materialart1.SelectedIndex = 2
    29. cmb_Materialart2.SelectedIndex = 1
    30. For Each line As String In VMReader
    31. cmb_Verbindungsmittel.Items.Add(line)
    32. Next
    33. cmb_Verbindungsmittel.SelectedIndex = 1
    34. End Sub
    35. Private Sub frm_Laschenanschluss1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
    36. 'panel an Formulargrösse anpassen
    37. pnl_links.Height = Me.Height - MenuStrip1.Height - 38 '38 wegen des Formularrahmens
    38. End Sub
    39. Private Sub chk_VM1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chk_VM1.CheckedChanged
    40. 'Verbindungsmittel-Checkboxen immer gleiche Anwahl:
    41. chk_VM2.Checked = chk_VM1.Checked
    42. End Sub
    43. Private Sub chk_VM2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chk_VM2.CheckedChanged
    44. 'Verbindungsmittel-Checkboxen immer gleiche Anwahl:
    45. chk_VM1.Checked = chk_VM2.Checked
    46. End Sub
    47. Private Sub cmb_Materialart1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_Materialart1.SelectedIndexChanged
    48. 'Festigkeitsklasse-Combobox füllen und Wert anzeigen:
    49. cmb_Festigkeitsklasse1.Items.Clear()
    50. Select Case cmb_Materialart1.SelectedItem
    51. Case "Nadelholz"
    52. For Each line As String In NHReader
    53. spalten = line.Split(vbTab)
    54. If Not spalten(0) = "Name" Then
    55. cmb_Festigkeitsklasse1.Items.Add(spalten(0))
    56. cmb_Festigkeitsklasse1.SelectedIndex = 0
    57. End If
    58. Next
    59. Case "Laubholz"
    60. For Each line As String In LHReader
    61. spalten = line.Split(vbTab)
    62. If Not spalten(0) = "Name" Then
    63. cmb_Festigkeitsklasse1.Items.Add(spalten(0))
    64. cmb_Festigkeitsklasse1.SelectedIndex = 0
    65. End If
    66. Next
    67. Case "BSH"
    68. For Each line As String In BSHReader
    69. spalten = line.Split(vbTab)
    70. If Not spalten(0) = "Name" Then
    71. cmb_Festigkeitsklasse1.Items.Add(spalten(0))
    72. cmb_Festigkeitsklasse1.SelectedIndex = 0
    73. End If
    74. Next
    75. End Select
    76. 'Nachweise-Label füllen:
    77. lbl_Materialart1.Text = cmb_Materialart1.SelectedItem.ToString & ", " & cmb_Festigkeitsklasse1.SelectedItem.ToString
    78. End Sub
    79. Private Sub cmb_Materialart2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_Materialart2.SelectedIndexChanged
    80. 'Festigkeitsklasse-Combobox füllen und Wert anzeigen:
    81. cmb_Festigkeitsklasse2.Items.Clear()
    82. Select Case cmb_Materialart2.SelectedItem
    83. Case "Nadelholz"
    84. For Each line As String In NHReader
    85. spalten = line.Split(vbTab)
    86. If Not spalten(0) = "Name" Then
    87. cmb_Festigkeitsklasse2.Items.Add(spalten(0))
    88. cmb_Festigkeitsklasse2.SelectedIndex = 0
    89. End If
    90. Next
    91. Case "Laubholz"
    92. For Each line As String In LHReader
    93. spalten = line.Split(vbTab)
    94. If Not spalten(0) = "Name" Then
    95. cmb_Festigkeitsklasse2.Items.Add(spalten(0))
    96. cmb_Festigkeitsklasse2.SelectedIndex = 0
    97. End If
    98. Next
    99. Case "BSH"
    100. For Each line As String In BSHReader
    101. spalten = line.Split(vbTab)
    102. If Not spalten(0) = "Name" Then
    103. cmb_Festigkeitsklasse2.Items.Add(spalten(0))
    104. cmb_Festigkeitsklasse2.SelectedIndex = 0
    105. End If
    106. Next
    107. End Select
    108. 'Nachweise-Label füllen:
    109. lbl_Materialart2.Text = cmb_Materialart2.SelectedItem.ToString & ", " & cmb_Festigkeitsklasse2.SelectedItem.ToString
    110. End Sub
    111. Private Sub cmb_Verbindungsmittel_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_Verbindungsmittel.SelectedIndexChanged
    112. 'Stahlsorte-Combobox und Durchmesser-Combobox füllen und Wert anzeigen:
    113. cmb_Stahlsorte.Items.Clear()
    114. cmb_Stabdübel_Durchmesser.Items.Clear()
    115. Select Case cmb_Verbindungsmittel.SelectedItem
    116. Case "Passbolzen"
    117. For Each line As String In BolzenklasseReader
    118. spalten = line.Split(vbTab)
    119. If Not spalten(0) = "Klasse" Then
    120. cmb_Stahlsorte.Items.Add(spalten(0))
    121. cmb_Stahlsorte.SelectedIndex = 0
    122. End If
    123. Next
    124. For Each line As String In StabDübelDurchmesserReader
    125. If Not line.ToString = "Durchmesser" Then
    126. cmb_Stabdübel_Durchmesser.Items.Add(line)
    127. cmb_Stabdübel_Durchmesser.SelectedIndex = 0
    128. End If
    129. Next
    130. Case "Stabdübel"
    131. For Each line As String In StabDübelStahlgüteReader
    132. spalten = line.Split(vbTab)
    133. If Not spalten(0) = "Stahlsorte" Then
    134. cmb_Stahlsorte.Items.Add(spalten(0))
    135. cmb_Stahlsorte.SelectedIndex = 0
    136. End If
    137. Next
    138. For Each line As String In StabDübelDurchmesserReader
    139. If Not line.ToString = "Durchmesser" Then
    140. cmb_Stabdübel_Durchmesser.Items.Add(line)
    141. cmb_Stabdübel_Durchmesser.SelectedIndex = 0
    142. End If
    143. Next
    144. Case "Gewindestangen"
    145. For Each line As String In BolzenklasseReader
    146. spalten = line.Split(vbTab)
    147. If Not spalten(0) = "Klasse" Then
    148. If spalten(4) = "Ja" Then
    149. cmb_Stahlsorte.Items.Add(spalten(0))
    150. cmb_Stahlsorte.SelectedIndex = 0
    151. End If
    152. End If
    153. Next
    154. For Each line As String In StabDübelDurchmesserReader
    155. If Not line.ToString = "Durchmesser" Then
    156. cmb_Stabdübel_Durchmesser.Items.Add(line)
    157. cmb_Stabdübel_Durchmesser.SelectedIndex = 0
    158. End If
    159. Next
    160. End Select
    161. 'Nachweise-Label füllen:
    162. lbl_VM.Text = cmb_Verbindungsmittel.SelectedItem.ToString & ", " & cmb_Stahlsorte.SelectedItem.ToString
    163. End Sub
    164. Private Sub cmb_Stahlsorte_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_Stahlsorte.SelectedIndexChanged
    165. 'f_uk-Textbox füllen:
    166. txt_fuk.Clear()
    167. Select Case cmb_Verbindungsmittel.SelectedItem.ToString
    168. Case "Passbolzen"
    169. For Each line As String In BolzenklasseReader
    170. spalten = line.Split(vbTab)
    171. If spalten(0) = cmb_Stahlsorte.SelectedItem.ToString Then
    172. txt_fuk.Text = spalten(1)
    173. End If
    174. Next
    175. Case "Stabdübel"
    176. For Each line As String In StabDübelStahlgüteReader
    177. spalten = line.Split(vbTab)
    178. Select Case cmb_Stahlsorte.SelectedItem.ToString
    179. Case "benutzerdefiniert"
    180. txt_fuk.Text = ""
    181. txt_fuk.Focus()
    182. Case Else
    183. If spalten(0) = cmb_Stahlsorte.SelectedItem.ToString Then
    184. txt_fuk.Text = spalten(1)
    185. End If
    186. End Select
    187. Next
    188. Case "Gewindestangen"
    189. For Each line As String In BolzenklasseReader
    190. spalten = line.Split(vbTab)
    191. If spalten(0) = cmb_Stahlsorte.SelectedItem.ToString Then
    192. txt_fuk.Text = spalten(1)
    193. End If
    194. Next
    195. End Select
    196. 'Nachweise-Label füllen:
    197. lbl_VM.Text = cmb_Verbindungsmittel.SelectedItem.ToString & ", " & cmb_Stahlsorte.SelectedItem.ToString
    198. End Sub
    199. End Class
    Fehler: NullReferenceException wurde nicht behandelt.
    in der Zeile

    VB.NET-Quellcode

    1. 'Nachweise-Label füllen:
    2. lbl_VM.Text = cmb_Verbindungsmittel.SelectedItem.ToString & ", " & cmb_Stahlsorte.SelectedItem.ToString & ", d = " & cmb_Stabdübel_Durchmesser.SelectedItem.ToString
    3. End Sub
    4. End Class
    Hi Leute,

    ich hab das Problem jetzt gelöst...einfach die cmb_Stabdübel_Durchmesser in ein Extra-Label...

    VB.NET-Quellcode

    1. Private Sub cmb_Stabdübel_Durchmesser_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_Stabdübel_Durchmesser.SelectedIndexChanged
    2. Label59.Text = ", d = " & cmb_Stabdübel_Durchmesser.SelectedItem.ToString & " mm"
    3. Label59.Location = New Point(lbl_VM.Location.X + lbl_VM.Width, lbl_VM.Location.Y)
    4. End Sub


    Trotzdem danke
    In folgendem Beispiel wird gezeigt, wie vorher geprüft wird.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. If (Me.ComboBox1.SelectedItem IsNot Nothing) Then
    4. MessageBox.Show(CStr(Me.ComboBox1.SelectedItem))
    5. End If
    6. End Sub
    7. End Class