Combobox
のバインディングをclass property
に追加しようとしています。プロパティは列挙型です。私はenum
のアイテムをCombobox
にロードすることができたかもしれませんが、それはちょっと違法ですが、うまく機能します。 (改善の提案も歓迎します)フォームがロードされると、Combobox
はアクティブな性別を示し、すべてのオプションはドロップダウンメニューに表示されます。コンボボックスへのオブジェクトプロパティのバインド
しかし、Combobox
のフォーカスをbutton
に変更すると、それは男性に戻ります(私のテストでは、性別を女性に変更したい)。
新しい性別の値がオブジェクトに確実に渡されるようにするにはどうすればよいですか?
あなたはデータバインディングを使用している場合これは私のコードサンプル
Public Class Form1
Private Personobject As Person
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Personobject = New Person
Personobject.Gender = GenderEnum.Male
Dim enumType As Type = GetType(GenderEnum)
Dim names() As String = [Enum].GetNames(enumType)
For Each s As String In names
ComboBox1.Items.Add(s)
Next
ComboBox1.DataBindings.Add("Text", Personobject, "Gender")
End Sub
Private Enum GenderEnum
Male
Female
End Enum
Private Class Person
Public Property Gender As GenderEnum
End Class
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Debug.Print(Personobject.Gender.ToString)
End Sub
End Class
この文章では、 'genderListとして新しいリスト(Of Gender)([Enum] .GetValues(GetType(Gender))')というエラーが表示され、ジェンダーを受け入れず、潜在的な修正が利用できません。私は何かを輸入する必要がありますか? –
答えで修正されました。 OfType(Of Gender) ' – Fabio
' Gender 'の型は定義されていませんので、 '[Enum] .GetValues(GetType(Gender))になるように' Gender'の配列に変換する必要があります。それでもエラーは持続します。 –