0

C#は初めてです

ADD()メソッドを実行する前に、リストビューのSUBItemに対して繰り返し値をチェックできるかどうかを確認したいだけです。

リストビューがあり、アイテムを追加/削除できるとしましょう

私はたくさんのアイテムとサブアイテムを持つことができます

開いているファイルをリストビューに追加する前にチェックを実行したい

これから入れるファイルは、ファイルの名前、例:example.txtです。

そして、このファイルがサブアイテムに存在する場合、リストビューに追加しません

誰かが私が追加しようとしている値に対してサブアイテムの値をチェックする方法について何か考えがありますか?

TIA

4

2 に答える 2

1

そうですね、ListViewのItemsプロパティを繰り返し処理してから、各アイテムのSubitemsプロパティを繰り返し処理し、最後にサブアイテムのTextプロパティを確認することができます。

もう1つのオプションは、すでに追加されているアイテムをリストに保存し、追加するアイテムがすでにリストに含まれているかどうかを確認することです。

編集:要求に応じて、以下にサンプルコードを追加しました。

private bool _CheckFileName(string fileName)
{
    foreach(ListViewItem item in this.myListView.Items)
    {
        // this is the code when all your subitems are file names - if an item contains only one subitem which is a filename,
        // then you can just against that subitem, which is better in terms of performance
        foreach(ListViewItem.ListViewSubItem subItem in item.SubItems)
        {
            // you might want to ignore the letter case
            if(String.Equals(fileName, subItem.Text))
            {
                return false;
            }
        }
    }

    return true;
}

using(var ofd = new OpenFileDialog())
{
    // ... setup the dialog ...

    if(ofd.ShowDialog() == DialogResult.Cancel)
    {
        // cancel
        return;
    }

    // note that FileOpenDialog.FileName will give you the absolute path of the file; if you want only the file name, you should use Path.GetFileName()
    if(!_CheckFileName(ofd.FileName))
    {
        // file already added
        return;
    }

    // we're cool...
}

私はコードをテストしなかったので、タイプミスがある可能性があります。その場合は、コメントを追加して修正します(ただし、最初に自分で理解しようとした方がよいでしょう:))。

于 2010-08-30T10:57:27.187 に答える
0

各アイテムに関する情報を含むヘルパークラスを作成できます。それぞれについてListViewItem、このクラスの新しいインスタンスを作成し、ListViewItem.Tagこのインスタンスに設定します。

すべてのアイテムを繰り返し処理し、アイテムのヘルパーオブジェクトを取得して、そのヘルパーオブジェクトと比較するだけで済みます。

于 2010-08-30T11:11:56.493 に答える