F3を割り当てられたコンボがF4でロストフォーカスした時にリストが展開してしまう。
- 題名: F3を割り当てられたコンボがF4でロストフォーカスした時にリストが展開してしまう。
- 著者: けい
- 日時: 2007/01/22 19:02:05
- ID: 18882
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: F3を割り当てられたコンボがF4でロストフォーカスした時にリストが展開してしまう。
- 著者: けい
- 日時: 2007/01/22 19:04:42
- ID: 18883
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: F3を割り当てられたコンボがF4でロストフォーカスした時にリストが展開してしまう。
- 著者: 琥珀
- 日時: 2007/01/23 9:38:21
- ID: 18888
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: F3を割り当てられたコンボがF4でロストフォーカスした時にリストが展開してしまう。
- 著者: けい
- 日時: 2007/01/23 11:43:36
- ID: 18892
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
失礼致します。ご質問させてください。
frmTest(Form)に、TextBox1(TextBox)、ComboBox1(ComboBox)、btnF3(Button)、btnF4(Button)という4つのコントロールを配置しています。
frmTestのKeyPreviewはTrueにしています。ComboBox1のDropDownStyleは、
DropDownListです。TextBox1のTabIndexは2、ComboBox1のTabIndexは3です。
ComboBox1には、Microsoft AccessのMDBのテーブル「TEST」から、フィールド「A」をValueMember、フィールド「B」をDisplayMemberとして取得しています。
実現したい動きは、
・F3を押した時に、ComboBox1にフォーカス。リストは開かず。TextBox1は空へ。
・F4を押した時に、TextBox1にフォーカス。ComboBox1のリストは開かず。
というものです。
以下のコードを実行すると、F3を押しても、F4を押しても、
ComboBox1のリストは開きませんが、唯一、F3を押した直後にF4を押すと、
リストが開いてしまいます。ここでリストが開かないようにしたいと思っています。TextBox1にF4ではなくF5を割り当てると、この現象は起きません。
コードの各所に、ComboBox1.DroppedDown=Falseを記述しても、
解決しませんでした。この現象の解決に、何かよい方策がございましたら、
ご教示頂きたく、よろしくお願い致します。
Imports System.Data.OleDb
Public Class frmTest
Inherits System.Windows.Forms.Form
Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btnF3.Tag = 3
btnF4.Tag = 4
ComboBox1_GetList()
Private Sub frmTest_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.F3 Then
btnF3.PerformClick()
ElseIf e.KeyCode = Keys.F4 Then
btnF4.PerformClick()
End If
Private Sub MenuButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnF3.Click, btnF4.Click
Select Case sender.Tag
Case 3
TextBox1.Text=""
ComboBox1.SelectedIndex = 0
ComboBox1.Focus()
ComboBox1.SelectAll()
Case 4
'「ComboBox1.Text = ComboBox1.Items(0)」はエラーになる。
ComboBox1.SelectedIndex = 0
TextBox1.Focus()
TextBox1.SelectAll()
End Select
Private Sub ComboBox1_GetList()
Dim Cn As New OleDbConnection("(接続文字列)")
Dim strSQL As String = "select[A],[B] from [TEST] ORDER BY [A]"
Dim cmd As New OleDbCommand(strSQL, Cn)
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Try
cmd.Connection = Cn
cmd.CommandText = strSQL
da.SelectCommand = cmd
ds.Clear()
da.Fill(ds, "B")
ComboBox1.DataSource = ds.Tables("B")
ComboBox1.DisplayMember = "B"
ComboBox1.ValueMember = "A"
Catch
Finally
ComboBox1.SelectedIndex = 0
End Try
End Sub
End Class