2017-02-27 137 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; 

1)获取ListBoxItem)然后把所选项目进入查看:

selectedListBoxItem.BringIntoView(); 
+0

非常感谢,这帮助我找到了需要采取的正确途径。 – Stone