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

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

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

Re[2]: ComboBoxで部分一致検索をしたい


(過去ログ 25 を表示中)

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

■10863 / inTopicNo.1)  ComboBoxで部分一致検索をしたい
  
□投稿者/ Chihuahua (1回)-(2007/11/28(Wed) 16:50:10)

分類:[VB.NET/VB2005] 

こんばんは。

VB.net2005のComboBoxで、以下の設定でAutoCompleteを使用しているのですが、
一致条件を前方一致ではなく部分一致にする方法はないでしょうか?

AutoCompleteMode:Suggest
AutoCompleteSource:ListItems

引用返信 編集キー/
■11189 / inTopicNo.2)  Re[1]: ComboBoxで部分一致検索をしたい
□投稿者/ ID非公開 (3回)-(2007/12/09(Sun) 04:38:24)
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


以上です。

引用返信 編集キー/
■11190 / inTopicNo.3)  Re[2]: ComboBoxで部分一致検索をしたい
□投稿者/ ID非公開 (4回)-(2007/12/09(Sun) 05:04:41)
4回目の投稿です。


小さいミスが1つありました。(動作に影響はほとんどありませんが)

    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
                Exit For ' ←------------------------------ 追加(なくても構いませんが・・・)
            End If
        Next
    End Sub

以上です。

引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -