2016-08-23 25 views
-4

メディアプレーヤーのプレイリストとしてリストボックスを作成します。なぜ、同じファイルをlistboxで無視するのはなぜですか?

しかし、同じファイルを無視すると同時に2回追加されます。

リストボックスに同じファイルの追加(2回以上)を同時に行う方法を教えてください。

は私のコードを参照してください:

XAML:

<ListBox x:Name="listbox4" Drop="listbox4_Drop" </ListBox> 

<Button x:Name="load" Content="Load" Width="76" Click="load_Click" /> 

Xaml.cs:

private Dictionary<string, string> fileDictionary = new Dictionary<string, string>(); 

    private void load_Click(object sender, RoutedEventArgs e) 
    { 
    Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog(); 
    ofd.DefaultExt = ".mp3"; 
    ofd.Filter = "All|*.*"; 
    ofd.Multiselect = true; 
    Nullable<bool> result = ofd.ShowDialog(); 
    if (result == true) 
    { 

     for (int i = 0; i < ofd.FileNames.Length; i++) 
     { 
      var filePath = ofd.FileNames[i]; 
      var fileName = System.IO.Path.GetFileName(filePath); 
      fileDictionary.Add(fileName, filePath); 
      listbox4.Items.Add(fileName); 
      listbox4.SelectedItem = fileName; 
     } 
    } 
    } 

    private void listbox4_Drop(object sender, DragEventArgs e) 
    { 
     if (e.Data.GetDataPresent(DataFormats.FileDrop)) 
     { 

      string[] droppedFilePaths = 
       e.Data.GetData(DataFormats.FileDrop, true) as string[]; 

      foreach (string droppedFilePath in droppedFilePaths) 
      { 
       var filePath = droppedFilePath; 
       var fileName = System.IO.Path.GetFileName(filePath); 
       fileDictionary.Add(fileName, filePath); 
       listbox4.Items.Add(fileName); 
       listbox4.SelectedItem = fileName; 
      } 

     } 
    } 

私を助けてください。

同じファイルを開いたり削除したりすると無視され、エラーが表示されます。

それ以外の場合は問題ありません。この文を示す

エラー

fileDictionary.Add(fileName, filePath); 

+1

あなたは実際に辞書が何であるか知っていますか? ;-)多分あなたは見てみるべきです。 – kassi

+4

「エラー」には、文字通り何が間違っているのかが記されています。「同じキーを持つ要素がすでに辞書に存在しています...」 – Joe

答えて

2

にのみを任意のキーに1つのエントリを含めることができます辞書を助けてください。したがって、同じキーを使用して別の値を追加しようとすると、エラーが発生します。

+0

どうすれば解決できますか? –

+0

これは達成したいことに依存します。複数のインスタンスが辞書を全く使用しないようにしたい場合、または対応する値を 'List'にします。 1つの値が必要な場合は、そのキーがすでに含まれているかどうかを確認し、値があれば追加しないでください。 'dict [key] = newValue'を使って新しい値を再割り当てすることもできます。 –

+0

辞書を使用しないと、一度にファイル名とファイルパスを使用できません。 –

関連する問題