コンボボックスの値を変数に保存したいのですが、コンボボックスの値を変更すると値がnullになり、選択したインデックスが '-1'と表示されます。コード。Visual Basic、コンボボックスの値を変数に保存
Private Sub SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim form As CreateEvalForm = New CreateEvalForm //windows Form
Dim str As String = form.ComboBox1.SelectedIndex
MessageBox.Show(str) //shows null
Dim openingId As Integer = Val(form.ComboBox1.Text)
End Sub
誰も解決策を提案できませんか?
SelectedIndexを、整数ではなく文字列です。 ComboBox1.SelectedItemはComboBox1.Textよりも少し良いです。 – muffi
@muffi、 'SelectedItem'は' Text'より優れていません。彼らは両方の目的に合っています。 'Text'は、選択された項目のコントロールに表示されるテキストを取得し、' SelectedItem'は項目自体を取得します。どちらを使うべきかは、あなたが望むものによって異なります。ドロップダウンリストに 'Strings'を追加した場合、' Text'は 'String'型であり、SelectedItem'は' Object'型ですが、2つは同じものを返します。あなたが 'DisplayMember'を設定していれば、それはまったく同じことではありません。 – jmcilhinney
もちろん、あなたは選択されたアイテムを取得しません。あなたは現在のフォームのコントロールのイベントを処理しているし、イベントハンドラでは、新しいフォームを作成し、コントロールにアクセスします。そのフォームは表示されていないので、もちろん選択されているものはありません。新しいフォームを作成するコードを取り除き、現在のフォームの 'ComboBox'にアクセスしてください。 – jmcilhinney