2016-03-28 19 views
1

コンボボックスのデータが入っている整数のデータを渡す必要があります。フォーム2では、渡される整数に基づいて残りのフィールドを設定する必要があります。私は整数を渡すことができますが、form2が開くと、データベースのリストの一番上にある値が引き上げられます。私のすべてのテキストボックスとコンボボックスは、ドラッグアンドドロップデータソースによって作成されます。私はまた、.Text.SelectedItemを試みたが、無駄にしている.selectedTextフォームからフォームへの値の受け渡し

cboStudentNo.SelectedText = studentNo 

Insted:

studentNo = cboStudents.SelectedText 

のForm2コード:

studentNoは私のグローバル変数

Form1のコードです。

ご意見をいただければ幸いです。

+3

整数はバインドされていません。 DBからの値にバインドされたコントロールがありますが、varsではありません。あなたがそれに/データ*を渡すことができるように受信機のフォームにメソッドを作成してください – Plutonix

+0

また、 'SelectedText'おそらくそれはあなたがそれを行うと思います。マウスを持っているときにポップアップするIntellisenseのヒントを読む – Plutonix

+0

@Plutonixメソッドを作成することで何を提案していますか? – Donncha

答えて

1

まず、studentNoが整数の場合は、Option Strictをオンにする必要があります。このコードはコンパイルされません:

studentNo = cboStudents.SelectedText 

テキスト/文字列を整数に割り当てています。次に、SelectedTextはおそらくあなたが望むことをしません。 Intellisenseは、それがGets or sets the text that is selected in the editable portion of a ComboBox.であることを私たちに伝えています。リスト内の選択項目ではありません。

生徒のバインドされたコンボボックスについては、DisplayMemberが名前で、ValueMemberがIDであるとすると、SelectedValueが必要です。あなたはSelectedValueChangedイベントでそれを得ることができます:SelectedValueObjectになり、あなたはそれを整数に割り当てたいので

' ToDo: check if selectedvalue is nothing to avoid NRE 
studentNo = Convert.ToInt32(cbo.SelectedValue) 

変換が必要です。必要に応じて他のフォームに渡すには、受け取る方法を作成します。

' on form 2 
Public Sub DisplayStudentInfo(id As Int32) 
    ' wonderful things 
End Sub 

次に情報を渡します。また

' push/pass/convey the desired ID to the other form: 
frm2.DisplayStudentInfo(studentNo) 

手段がそれを公開するとして、あなたは1つのフォームまたは他のプロパティを作成することができます。frm2はForm2のインスタンスであると仮定。これは(あまりにも)パッシブになる可能性があります。Form1を小道具として公開すると、他のフォームはそれがいつ変化するかを知る方法がありません。メソッド(Sub)を使用すると、値が渡されたときにアクションを実行するコードを追加できます。

+0

答えをありがとう!私が整数として生徒を持つ必要はありません、それを文字列に変更した場合、それはそれほど複雑ではありませんか? – Donncha

+0

DB内で表す列と同じ型でなければなりません。名前と暗黙の関数とOPが与えられれば、私はint32と仮定する。 – Plutonix

+0

私の悪い、それは実際に私のDBの文字列として設定されています! – Donncha