2016-06-28 4 views
-1

VirtualModeを使用しているときにListViewで検索を行うのに問題があります。 ListViewの読み込みは、RetrieveVirtualItemイベントを使用して見つけるだけです。VirtualModeでListViewItemを検索します。

私のフォームにはテキストボックスと「検索」ボタンがあります。

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    listViewFields.FindItemWithText(txtSearch.Text); 
} 

私は私のコレクション内のテキストを検索し、イベント引数のIndexプロパティにインデックスを設定しSearchForVirtualItemイベントを処理しています。

private void listViewFields_SearchForVirtualItem(object sender, SearchForVirtualItemEventArgs e) 
{ 
     e.Index = collection.IndexOf(e.Text); 
} 

e.Indexの値は期待値に設定されますが、ListViewでは何も起こりません。

+0

あなたはMSDN 4 [ListView.SearchForVirtualItemイベント](https://msdn.microsoft.com/en-us/library/system.windows.forms.listview.searchforvirtualitem(見て検討していますv = vs.110).aspx) – MethodMan

+0

これは私が使用しているものです。 2番目のコードブロックに気がついたら、私はそのイベントを処理しています。 FindItemWithTextメソッドはそのイベントをトリガし、イベントargsのe.Textの値はFindItemWithTextに渡した値です。何も起こりません。 – James

+0

http://stackoverflow.com/questions/27129619/how-to-use-finditemwithtext – MethodMan

答えて

0

e.Indexの値は期待値に設定されますが、ListViewでは何も起こりません。

FindItemWithText方法は、それが言うまさにません - 見つけて、戻り指定したテキスト値で始まる最初のListViewItem。

リストビューで何か起こるには、返されたアイテムで何かをする必要があります。例えば:

var item = listViewFields.FindItemWithText(txtSearch.Text); 
if (item != null) 
{ 
    listViewFields.FocusedItem = item; 
    item.Selected = true; 
    item.EnsureVisible(); 
} 
+0

それはどちらもうまくいかないようです。 – James

+0

何かを返すのですか? –

+0

はい、そうです。私が期待していたアイテムを返します。問題は、リストビューがその項目に移動しないことです。 – James

関連する問題