2011-07-11 30 views
9

私は以下のC#コードを使用してWinForms ListBoxを作成しています。私はしかし、すべてのシステムフォルダを非表示にしたい。 $ RecyclingBinのように。しかしそれは私に次のエラーを与える。System.ArgumentException:Complex DataBindingは、IListまたはIListSourceのいずれかをデータソースとして受け取ります。

System.ArgumentException:複雑なデータバインディングは、IListまたはIListSourceのいずれかをデータソースとして受け取ります。

これは私にとって紛らわしいものです。私がどこに間違っているのか誰にでも教えてくれますか?

string[] dirs = Directory.GetDirectories(@"c:\"); 
var dir = from d in dirs 
      where !d.StartsWith("$") 
      select d; 

listBox.DataSource = (dir.ToString()); 
+3

このような場合は、[DirectoryInfo](http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.aspx)にバインドします。文字列より簡単に扱うことができ、[属性](http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.attributes.aspx)を使用してフィルタリングすることができます。 – Will

答えて

21

変更:

listBox.DataSource = (dir.ToString()); 

へ:

listBox.DataSource = dir.ToList(); 

dir.ToString()は単に便利ではありませんこれは、列挙のいくつかの説明を吐き出すます。エラーメッセージは、リストが必要であることを示します。したがって、.ToList()です。

関連する問題