+ YOSHIKI & Violet UK FAN SITE -Blind Tears- 管理人の日記 +

Blind Tears管理人こぅきの日記です☆彡
興味ある記事があればコメント・意見等お願いします☆

【VB.NET】コンボボックスで補完機能(オートコンプリート)

2006年11月07日 18時17分06秒 | PC関連
今、会社で開発してるシステムでコンボボックスで補完できたらなと思って色々調べて実装しました。相変わらずの個人メモです。


' オーダ補完入力用
Private Sub CmbBox_Order3_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles CmbBox_Order3.KeyUp

Dim sTypedText As String
Dim iFoundIndex As Integer
Dim oFoundItem As Object
Dim sFoundText As String
Dim sAppendText As String

' オートコンプリートしないキーを設定
Select Case e.KeyCode
Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Delete, Keys.Down, Keys.Tab
Return
End Select

' 入力文字からコンボ内のコレクションを検索
sTypedText = CmbBox_Order3.Text
iFoundIndex = CmbBox_Order3.FindString(sTypedText)

' コレクション内に見つかったらオートコンプリート
If iFoundIndex >= 0 Then

oFoundItem = CmbBox_Order3.Items(iFoundIndex)
sFoundText = CmbBox_Order3.GetItemText(oFoundItem)
sAppendText = sFoundText.Substring(sTypedText.Length)
CmbBox_Order3.Text = sTypedText & sAppendText

' オートコンプリート部を選択状態にする
CmbBox_Order3.SelectionStart = sTypedText.Length
CmbBox_Order3.SelectionLength = sAppendText.Length

End If

End Sub