|
3回目の投稿です。
Chihuahua さん、はじめまして。(すごい時間ですが・・・)
とりあえず、TextBoxと連携して部分一致機能を
実現する方法を実装しました。
ComboBoxのみで行う方法がもし見つかれば
後日掲載したいと思います。
使い方
1.コードをどこかにコピーして一度ビルド
2.デザイナでドロップ
3.TextBoxもドロップ
4.TargetTextBoxプロパティを設定(「拡張」タブ)
実行画面ではTextBox側に入力してください。
VB2005で動作確認しましたが、
念のため、使用は自己責任ということでお願いします。
(コードが長くなるのでXMLコメントは省略しました)
Imports System.componentmodel
Public Class ComboBoxPartialSearchExtension
Inherits ComboBox
Dim WithEvents m_tbx As TextBoxBase
<Description("部分一致検索文字列を入力するTextBox"), Category("拡張")> _
Public Property TargetTextBox() As TextBoxBase
Get
Return Me.m_tbx
End Get
Set(ByVal value As TextBoxBase)
m_tbx = value
End Set
End Property
Public Sub New()
addlist()' ←適宜コメントアウトしてください
End Sub
Private Sub addlist()
Me.Items.AddRange(New String() {"system", "system.windows.forms", _
"system.web.ui.webcontrols", "microsoft.visualbasic.interactions", _
"system.text", "system.collections", "system.reflection"})
End Sub
Private Sub selectone(ByVal match As String)
For i As Integer = 0 To Me.Items.Count - 1
Dim ss As String = Me.Items(i).ToString
If ss.Contains(match) = True Then
Me.SelectedIndex = i
Me.SelectionStart = ss.IndexOf(match)
Me.SelectionLength = match.Length
End If
Next
End Sub
Private Sub tbx_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles m_tbx.TextChanged
selectone(m_tbx.Text)
End Sub
End Class
以上です。
|