月曜日から日曜日までの曜日を含むドロップダウンリストがあります。数値の曜日をその名前にマップする2つの値のユーザー定義タイプが入力されます。
Public Structure WeekDays
Public ID As Integer
Public Text As String
Public Overrides Function ToString() As String
Return Me.Text
End Function
End Structure
バインドするオブジェクトには整数プロパティDayOfWeekがあり、ドロップダウンで選択したアイテムのID値をオブジェクトのDayOfWeekプロパティにバインドします。例えば。ユーザーが木曜日を選択すると、ID4がオブジェクトに渡されます。
コードでは、SelectedItemのUDTを取得できますが、コンボボックスのどのプロパティにバインドするかがわかりません。
- ドロップダウンのItemsコレクションにUDTを直接追加すると、SelectedValueはNothingになります。
- UDTをList(Of UDT)コレクションに追加し、それをドロップダウンのデータソースとして設定し、ValueMemberをIDに設定し、DisplayMemberをTextに設定すると、SelectedValueは、ValueMemberプロパティで指示されたIDではなく、UDT全体を返します。
データバインディングはプレーンテキストボックスでは非常にうまく機能するようですが、より複雑なコントロールを処理する場合は、はるかに厄介になるようです。
更新:私が探しているのはBindingステートメントです。例えば。ない...
oB = New Binding("SelectedItem", Payroll, "DayOfWeek")
oB = New Binding("SelectedItem.ID", Payroll, "DayOfWeek")
...動作します。1つ目は無視され(おそらくSelectedItemプロパティがNothingであるため)、2つ目は「バインドできません...」エラーで失敗します。