

C#でListViewをプログラミングしています。  
itemsとsubitemsを登録し、そして、検索するという単純なものです。  
検索のロジックで、うまくいかないので、どなたか教えて頂けないでしょうか？

内容は、検索したい語句（名前）をテキストボックスにに入力し、  
検索のボタン（Button-Click）を押すと、もし検索項目（名前）に一致する項目が見つかれば、  
見つかった項目にフォーカスが移動し、内容をテキストボックスに表示します。  
選択項目数を０にすると、Indexエラーになります。  
なので、選択項目数は０以上にしたり、  
for loopをみなおしたりしましたが、うまくいきません。

以下にコードを記述しますので、どこに間違いがあるのか、教えて頂けると幸いです。

よろしくおねがいします。

[code]

    public void Button_Click(object sender, EventArgs e)
    {
        string name = Name.Text;
        if (ListView1.SelectedItems.Count > 0)
        {
    
        var item = ListView1.SelectedItems[0];
    
        for (int i = 0; i >= ListView1.SelectedItems.Count; i++)
        {
            if (ListView1.Items[0].Text.Contains(Name.Text))
            {
            if (ListView1.FocusedItem != null)
                ListView1.FocusedItem.Focused = false;
            if (ListView1.SelectedItems.Count > 0)
                ListView1.SelectedItems[0].Selected = false;
    
            ListView1.Items[i].Selected = true;
            }ListView1.Focus();
        }
        else
        {
            MessageBox.Show("エラー");
        }
        }
    }
    
[/code]


CC BY-SA 4.0
2022-07-18T04:00:40.427
90057
2023-09-14T21:07:50.970
2022-07-18T04:06:06.760
3060
53576
question
c#
ListViewのitemsを検索するには？


TextBox の名前が Name？  
Form が持つプロパティと同じ名前にしちゃいけません。(^_^;)

選択された項目の中から検索、っていうことでいいでしょうか？

[code]

    private void button1_Click(object sender, EventArgs e) {
        string name = txtName.Text;
        var items = listView1.SelectedItems;
        if (items.Count == 0) {
            MessageBox.Show("検索する範囲を選択してください。");
            return;
        }
        ListViewItem findItem = null;
        foreach (ListViewItem item in items) {
            if (item.Text.Contains(name)) {
                findItem = item;
                break;
            }
        }
        if (findItem != null) {
            listView1.SelectedItems.Clear();
            findItem.Selected = true;
            findItem.Focused = true;
            listView1.Focus();
        } else {
            MessageBox.Show("エラー");
        }
    }
    
[/code]


CC BY-SA 4.0
2022-07-18T10:53:10.837
90062
2022-07-18T10:53:10.837
50741
90057
answer