C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

テキストボックスでオートコンプリート機能

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■100913 / inTopicNo.1)  テキストボックスでオートコンプリート機能
  
□投稿者/ オニ (1回)-(2022/11/26(Sat) 10:40:08)

分類:[.NET 全般] 

2022/11/26(Sat) 10:54:08 編集(投稿者)

ああ
引用返信 編集キー/
■100914 / inTopicNo.2)  Re[1]: テキストボックスでオートコンプリート機能
□投稿者/ オニ (2回)-(2022/11/26(Sat) 11:19:57)
VB.NET2015でプログラムを開発しております。


これを、VB.NETのテキストボックスでオートコンプリート機能を使いたいと考えています。

https://hironimo.com/prog/vbnet/autocomplete/

このページを参考にして、
Private Sub Form1_Load


Textbox1.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource

Dim autoCompList As New AutoCompleteStringCollection
autoCompList.Add("1111111111")
autoCompList.Add("1111111112")
autoCompList.Add("1111111113")
autoCompList.Add("1211111111")
autoCompList.Add("1211111112")

TextBox1.AutoCompleteCustomSource = autoCompList

とやってみたところ、うまくプルダウンメニューを表示することができました。


しかし、いくつか問題があります。

この機能はキーボードでキーを押さないと
プルダウンメニューが表示されません。
マウスでテキストボックスをクリックした瞬間に表示することってできないでしょうか?




また、プルダウンメニューでリストを選択すると
自動で
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
が呼ばれ、

e.KeyCode = Keys.Enter
が入力されてしまいます。

ここに、文字を入力後に決定機能を割り当てているため、
リストをクリックした段階ではまだ、Enterキーが押された状態にしたくないのですが
どのようにすれば良いですか?


引用返信 編集キー/
■100922 / inTopicNo.3)  Re[2]: テキストボックスでオートコンプリート機能
□投稿者/ KOZ (358回)-(2022/11/27(Sun) 10:41:37)
No100914 (オニ さん) に返信
> しかし、いくつか問題があります。
> この機能はキーボードでキーを押さないと
> プルダウンメニューが表示されません。
> マウスでテキストボックスをクリックした瞬間に表示することってできないでしょうか?

なぜ問題と思うのでしょう?
入力された値で候補を絞り込んで表示するのがオートコンプリートです。
入力が無い状態では、もし表示できたとしても空な状態のような気がします。

> また、プルダウンメニューでリストを選択すると
> 自動で
> Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
> が呼ばれ、
> e.KeyCode = Keys.Enter
> が入力されてしまいます。
> ここに、文字を入力後に決定機能を割り当てているため、
> リストをクリックした段階ではまだ、Enterキーが押された状態にしたくないのですが
> どのようにすれば良いですか?

https://eagleboost.com/2006/02/21/%E5%93%8D%E5%BA%94AutoComplete%E4%B8%8B%E6%8B%89%E5%88%97%E8%A1%A8%E7%9A%84%E9%80%89%E6%8B%A9%E4%BA%8B%E4%BB%B6/

ユーザーがオートコンプリートのリストから選択したとき、RegisterWindowMessage("AC_ItemActivate") で登録されたメッセージが飛んできます。
このメッセージがきたら、次の KeyDown イベントを無視すればいいと思います。

引用返信 編集キー/
■100923 / inTopicNo.4)  Re[2]: テキストボックスでオートコンプリート機能
□投稿者/ WebSurfer (2588回)-(2022/11/27(Sun) 13:28:10)
No100914 (オニ さん) に返信
> VB.NET2015でプログラムを開発しております。

何を何で作っているか書いてください。(例: Windows 10 の Visual Studio 2022 で Windows
Forms アプリをターゲットフレームワーク .NET Framework 4.8 で作っています・・・とか)


> この機能はキーボードでキーを押さないと
> プルダウンメニューが表示されません。
> マウスでテキストボックスをクリックした瞬間に表示することってできないでしょうか?

プルダウンに表示された項目から選択するのが目的なら ComboBox を使うべきではないの
ですか?

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ