御世話になっております。ごつんと申します。
.net Framwork2.0、VB.NET、Windowsアプリケーションにてフォームにコンボボックスとテキストボックス(フォーカス移動の為だけに利用)を貼り以下のようなコードを書いた時・・・
Public Class Form1
Private dt As New DataTable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'データテーブルへデータ追加
dt.Columns.Add("col1")
dt.Rows.Add(dt.NewRow)
dt.Rows(0).Item("col1") = "1"
'コンボボックスアイテム追加
For i As Integer = 1 To 3
Me.ComboBox1.Items.Add(i.ToString())
Next
'ドロップダウンスタイル変更
Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
'バインド設定
Me.ComboBox1.DataBindings.Add("Text", dt, "col1")
End Sub
Private Sub ComboBox1_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Validated
Console.WriteLine(dt.Rows(0).Item("col1").ToString())
End Sub
End Class
マウスにてコンボボックスのプルダウンから適当な値を選択し、フォーカスアウトすると選択した値が出力されますが、キーボードのカーソルキー操作にてプルダウンから適当な値を選択し、フォーカスアウトすると選択した値が出力されません(選択前の値が出力されます。)
また、DropDownStyleプロパティをDropDownで同操作を行うと、マウス、キーボード操作に関係なく選択した値が出力されます。
この理屈が解らず、解決策(キーボード操作でも選択した値が出力される方法)を模索しております。
なにとぞご教示の程宜しくお願い致します。