- - PR -
ユーザーコンボボックスでドロップダウンを表示させるとカーソルが消える
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-30 13:44
ご教授よろしくお願いいたします。
Windowsアプリ VB.NET2003 コンボボックスを継承してオートコンプリート可能なユーザーコントロールを作成しました。 コンボボックスのKeyUpでドロップダウンリストを表示させるのですが、そのときカーソルが消えてしまいます。 マウスでドロップダウンリストを表示させた後に、テキストを入力するとカーソルは消えません。 カーソルはなぜ消えてしまうのでしょうか? Public Sub UserComboBox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _ Handles MyBase.KeyUp Dim sInputText As String Dim iFoundIndex As Integer Dim oFoundItem As Object Dim sFoundText As String Dim sAppendText As String '矢印キー、BackSpace、Deleteは処理しない Select Case e.KeyCode Case Keys.Left, Keys.Right, Keys.Up, Keys.Down, Keys.Back, Keys.Delete Return End Select '入力された文字をリストより検索する sInputText = MyBase.Text iFoundIndex = MyBase.FindString(sInputText) '検索結果あり If iFoundIndex >= 0 Then 'リストからItemを取得する oFoundItem = MyBase.Items(iFoundIndex) 'Itemに対応するデータを取得する sFoundText = MyBase.GetItemText(oFoundItem) 'テキストを補足する sAppendText = sFoundText.Substring(sInputText.Length) MyBase.Text = sInputText & sAppendText 'テキストを選択する MyBase.Select(sInputText.Length, sAppendText.Length) 'ドロップダウンリストを表示する MyBase.DroppedDown = True End If End Sub Public Sub AutoCompleteCombo_Leave(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles MyBase.Leave Dim iFoundIndex As Integer iFoundIndex = MyBase.FindStringExact(MyBase.Text) MyBase.SelectedIndex = iFoundIndex End Sub | ||||||||
|
投稿日時: 2006-05-30 14:29
ユーザーコントロールでない ComboBox + 以下のミニマム コードで十分確認できました。
ついでに、KeyDown、KeyPress イベントでも試してみたところ、 マウス ポインタは消えはしないものの、マウス ポインタの形状がそのままになりますね。 (たとえば、ComboBox の入力領域にポイントしている場合は、I ビーム形状のままになります) どうやら、ドロップダウンされた時から、制御が奪われっぱなしのような状態です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-31 10:13
じゃんぬさん
返答ありがとうございます。 じゃんぬさんの書かれているとおりでした。 KeyPressで処理をしてマウスカーソルはビーム形状のままで対応しました。 ありがとうございました。 |
1