2010-12-06 9 views
1

現在、ユーザーがディレクトリを参照してリストボックスに追加できるようにするリストボックスコントロールを持つwinformがあります。これらのディレクトリの場所は、アプリケーション設定ファイル(文字列?)を使用して保存されますが、各ディレクトリ文字列をどのように分けるべきかはわかりません。フォームをリロードすると、すべてのディレクトリが設定ファイルの個々の項目としてリストボックスに読み込まれます。C# - 複数のディレクトリを設定に保存してリストボックスにロードする

だから私は技術的に二つの質問があります:アプリケーション設定ファイル内の複数の場所を保存するための最も効率的な方法だろう何

  1. を?

  2. 設定からディレクトリをリストボックスに読み込む方法はありますか?

(複数のディレクトリがあります、覚えておいてください)私の考えは、1つの文字列の設定ですべてのディレクトリを保存し、カンマで区切ることでしたが、私はこれを行うには、より効率的な方法があるのか​​はわかりません。

答えて

1

いいえ!!!!それは決してしないでください!!!! カンマをフォルダ名に含めることができます。カンマを区切り記号として使用すると、プログラムに多くの重大な問題が発生する可能性があります。

Windowsのフォルダ名では無効な文字を使用できます。 \/: * ? " < > |

も、あなたはパスが多分店のでc:\\data\\として\/を使用し、セパレータとして「\」を使用することは悪いです、とそう/を使用することは危険ですc:/data/としても、彼らは多分保存することはできません。私は*または|を使用することをお勧めします。どちらも違法であり、フォルダパスのどこにも存在できず、連結されたいくつかのフォルダパスを持つ文字列は読み取り可能であり、単に区切りとして*または|を参照して認識することができます。

String[] paths = s.Split(new char[]{'*'}, StringSplitOptions.RemoveEmptyEntries); 
    listBox1.Items.AddRange(paths); 

ここで、sは、設定ファイルから読み込んだ連結フォルダパスの文字列です。 また、あなたは

 String[] paths = s.Split(new char[]{'*'}, StringSplitOptions.RemoveEmptyEntries); 
     listBox1.DataSource = paths; 
+0

を私も私の心を交差させなかったことを信じることができない、というのを考えていませんでした。ありがとう。 – user

+0

編集済み8moretogo –

0

カンマでstring.Splitを実行し、リストボックスのソースを分割結果に設定できます。

string settings = GetFromConfig(); 
var items = settings.Split(','); 
listBox1.DataSource = items; 
+0

を参照してください上記の「ノーコンマ」を使用することができます) –

0

設定ファイルでStringCollectionを使用できます。

コレクションに入れば、List<String>に戻して、ListBox.Itemsプロパティ(具体的にはAddメソッド)を介してアイテムを戻すことができます。

関連する問題