2017-07-26 10 views
0

コンボボックスの値を変数に保存したいのですが、コンボボックスの値を変更すると値が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 

誰も解決策を提案できませんか?

+1

SelectedIndexを、整数ではなく文字列です。 ComboBox1.SelectedItemはComboBox1.Textよりも少し良いです。 – muffi

+2

@muffi、 'SelectedItem'は' Text'より優れていません。彼らは両方の目的に合っています。 'Text'は、選択された項目のコントロールに表示されるテキストを取得し、' SelectedItem'は項目自体を取得します。どちらを使うべきかは、あなたが望むものによって異なります。ドロップダウンリストに 'Strings'を追加した場合、' Text'は 'String'型であり、SelectedItem'は' Object'型ですが、2つは同じものを返します。あなたが 'DisplayMember'を設定していれば、それはまったく同じことではありません。 – jmcilhinney

+1

もちろん、あなたは選択されたアイテムを取得しません。あなたは現在のフォームのコントロールのイベントを処理しているし、イベントハンドラでは、新しいフォームを作成し、コントロールにアクセスします。そのフォームは表示されていないので、もちろん選択されているものはありません。新しいフォームを作成するコードを取り除き、現在のフォームの 'ComboBox'にアクセスしてください。 – jmcilhinney

答えて

0
Private Sub SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged 
    Dim str As String = ComboBox1.SelectedIndex 
    MessageBox.Show(str) 
    Dim openingId As Integer = Val(ComboBox1.Text) 
End Sub 

これは機能しますか?新しいフォームを作成している。このラインで

dim openingId as Integer = Val(comboBox1.SelectedValue) 
0
Dim form As CreateEvalForm = New CreateEvalForm //windows Form 

、その新しいフォーム上のコンボボックスが同様に新しいとなりますので:あなたはコンボボックスの選択値から値を望んでいた場合でも、次のことを試してみてください選択されたインデックスはありません。

あなたは、このようにコンボボックスを使用することができます。

Dim str As String = ComboBox1.SelectedIndex 

または

Dim str As String = Me.ComboBox1.SelectedIndex 
関連する問題