2017-02-27 8 views
0

私はまだ学んでいるので、そのような乱雑なコードのために私を事前に許してください。ただし(つまり、小文字が区別されないよう、実際のデータ)私は検索フィールド、リストボックス、およびいくつかの擬似データを持っている以下のスクリーンショットリストボックス検索機能

Screen Shot of Controls

から、私は現在、検索を処理する方法は、あります値がサブストリング内で完全に一致している場合、検索フィールドはカラーホワイトからカラーグリーンに移行します。私がしようとしてきたことは、lstBoxコントロールが行を選択したときに行が選択されたときですが、行がある点まではスクロールしません。

私のだらしないコードは以下の通りです:

Sub searchRecord() 
    If txtSearch.Text <> "" And txtSearch.Text.Length = 10 Then 
     For i As Integer = 0 To lstLine.Items.Count - 1 
      If lstLine.Items(i).ToUpper.Substring(0, 10).Contains(txtSearch.Text.ToUpper) Then 
       lstLine.SelectedIndex = i 
       setSearch("#FF33BD48") 
       Exit For 
      Else 
       setSearch("#d31d1d") 
      End If 
     Next 
    Else 
     setSearch("#ffffff") 
    End If 
End Sub 

そしてあらゆる批判を喜ばせるには、この記事についてまたは私のコードのいずれか歓迎され、それは私が学ぶつもりだ唯一の方法です。

+0

をジャスト明確化:あなたの例では選択された行が「テキスト文字列50」であれば、選択/強調表示されますが、リストボックスには最初の27行しか表示されないため、表示されません。 –

答えて

1

BringIntoView()メソッドを使用する必要があります。 C#ので 私はこのようにそれを行うだろう:あなたのSelectedItem

ListBoxItem selectedListBoxItem = lstLine.ItemContainerGenerator.ContainerFromItem(lstLine.SelectedItem) as ListBoxItem; 

2からListBoxItemを)

1を取得)するとビューに選択した項目を持参:

selectedListBoxItem.BringIntoView(); 
+0

ありがとう、これは私が取る必要があった正しい道を見つけるのを助けました。 – Stone