C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 同じファイルをリストボックスへ入れない方法


(過去ログ 100 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■60004 / inTopicNo.1)  同じファイルをリストボックスへ入れない方法
  
□投稿者/ Haru (17回)-(2011/06/15(Wed) 13:08:56)

分類:[C#] 

2011/06/15(Wed) 13:42:20 編集(投稿者)

オープンファイルダイアログからファイルを複数選択し、リストボックスに入れた後
再びオープンファイルダイアログを開きファイルを選択する際、
リストボックスに入っているファイルと同じファイルを選択し(またはファイルを複数選択したときにリストボックスにあるファイルと同じファイルが入っていたとき)、リストボックスに格納するときは
リストボックスに入らないようにしたいです。
つまり、同じファイルがリストボックスにない場合のみ、ファイルをリストボックスへ格納したいです。

現在は、同じファイルがリストボックスに入るようになっており、
誤って同じファイルを選んでしまいうと、ファイルのデータを読み込む際に同じものを読み込んでしまいます。

現在のソースは以下です。

openFileDialog1.Filter = "テキスト(*.csv)|*.csv|" + "All files(*.*)|*.*";
//OpenFileDialogクラスのインスタンスを作成
OpenFileDialog ofd = new OpenFileDialog();
//複数のファイルを選択できるようにする
ofd.Multiselect = true;

if (ofd.ShowDialog() == DialogResult.OK)
{
//OKボタンがクリックされたとき
//選択されたファイル名をすべて表示する
foreach (string fn in ofd.FileNames)
{
listBox1.Items.Add(fn);

}
}

アドバイス等、よろしくお願い致します。

引用返信 編集キー/
■60005 / inTopicNo.2)  Re[1]: 同じファイルをリストボックスへ入れない方法
□投稿者/ shu (787回)-(2011/06/15(Wed) 13:29:19)
No60004 (Haru さん) に返信

listBox1.Items.Containsでチェックする。


SortedSet、DataSourceを使って
        SortedSet(Of String) ds = newSortedSet<string>();
        ds.Add("a");
        ds.Add("b");
        ds.Add("c");
        ListBox1.DataSource = ds.ToList();
        ds.Add("b");    //ここで同じものを追加、実際には追加されない。
        ds.Add("d");
        ds.Add("e");
        ListBox1.DataSource = ds.ToList();
※VB.NetコードをC#化したのでもしかしたら動かないかも。
こんな感じにする事も可能

引用返信 編集キー/
■60011 / inTopicNo.3)  Re[1]: 同じファイルをリストボックスへ入れない方法
□投稿者/ 禅 (1回)-(2011/06/15(Wed) 15:35:26)
気になったのだけれど、

> openFileDialog1.Filter = "テキスト(*.csv)|*.csv|" + "All files(*.*)|*.*";
> //OpenFileDialogクラスのインスタンスを作成
> OpenFileDialog ofd = new OpenFileDialog();

このopenFileDialog1とOpenFileDialog ofdは別物であるという点は理解していますか?
フィルタ"テキスト(*.csv)|*.csv|" + "All files(*.*)|*.*"は、このopenFileDialog1に適用されていますが、
OpenFileDialog ofdには適用されていないようなので。
引用返信 編集キー/
■60022 / inTopicNo.4)  Re[1]: 同じファイルをリストボックスへ入れない方法
□投稿者/ επιστημη (2628回)-(2011/06/15(Wed) 19:55:44)
επιστημη さんの Web サイト
> つまり、同じファイルがリストボックスにない場合のみ、ファイルをリストボックスへ格納したいです。
> ...
> 現在のソースは以下です。
>  
>   openFileDialog1.Filter = "テキスト(*.csv)|*.csv|" + "All files(*.*)|*.*";
>   //OpenFileDialogクラスのインスタンスを作成
>   OpenFileDialog ofd = new OpenFileDialog();
>   //複数のファイルを選択できるようにする
>   ofd.Multiselect = true;
>             
>   if (ofd.ShowDialog() == DialogResult.OK)
>   {
>     //OKボタンがクリックされたとき
>     //選択されたファイル名をすべて表示する
>     foreach (string fn in ofd.FileNames)
>     {
★      if ( listBox1.Items 内に fn が存在しない )
>         listBox1.Items.Add(fn);
>     }
>   }

★の一行を追加する「だけ」だということがわからないのですか?
「listBox1.Items 内に fn が存在しない」ことを調べる方法がわからないのですか?

引用返信 編集キー/
■60033 / inTopicNo.5)  Re[2]: 同じファイルをリストボックスへ入れない方法
□投稿者/ Haru (18回)-(2011/06/16(Thu) 10:04:19)
配列を利用して、比較させるようにしました。

みなさんありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -