- - PR -
コンボボックスでインクリメンタルサーチは可能?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-05-12 15:30
Windowsフォームにおいて
コンボボックスでインクリメンタルサーチを利かせる方法はありますでしょうか? DropDownListコンボボックスかつSortをTrue にすることで入力値一文字目が一致するものが表示されますが インクリメンタルサーチにはなりませんでした。 よろしくお願いします [ メッセージ編集済み 編集者: maru 編集日時 2003-05-12 15:39 ] |
|
投稿日時: 2003-05-12 17:25
わかりましたので報告!
こんな感じでできました。 ---------------------- Public Class ComboBoxEx Inherits System.Windows.Forms.ComboBox #Region " コンポーネント デザイナで生成されたコード " Public Sub New(Container As System.ComponentModel.IContainer) MyClass.New() 'Windows.Forms クラス作成デザイナのサポートに必要です。 Container.Add(me) End Sub Public Sub New() MyBase.New() ' この呼び出しは、コンポーネント デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後に初期化を追加します。 End Sub 'Component は、コンポーネント一覧に後処理を実行するために dispose をオーバーライドします。 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub ' コンポーネント デザイナで必要です。 Private components As System.ComponentModel.IContainer ' メモ : 以下のプロシージャはコンポーネント デザイナで必要です。 ' コンポーネント デザイナを使って変更してください。 ' コード エディタは使用しないでください。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() components = New System.ComponentModel.Container() End Sub #End Region Private buf As String Private startTime As DateTime Const NOT_FOUND As Integer = -1 'コンボボックスに該当データ無し Const WAIT_TIME As Integer = 1 '入力待ち時間 Private Sub ComboBoxEx_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress Dim nowTime As Date = DateTime.Now '現在時刻取得 '入力待ち時間中の入力かチェック If nowTime.CompareTo(startTime.AddSeconds(WAIT_TIME)) > 0 Then buf = e.KeyChar Else buf &= e.KeyChar 'リストから該当データがあるかを検索 Dim i As Integer = Me.FindString(buf) If i <> NOT_FOUND Then Me.SelectedIndex = i End If End If startTime = nowTime '入力時間の延長 End Sub End Class |
1