2011-12-22 14 views
0

私はこのエラーが一般的なものだと知っていますが、これを解決する方法がわかりません。同じキーを持つアイテムがすでに追加されていますエラー

私のシナリオはこれです:ウィンドウ1の

  • クリックボタン、ウィンドウ2は、(テキストボックスを移入)が表示されます。
  • ウィンドウ2でトランザクションを終了します(データを保存します)。
  • ウィンドウ2の「戻る」ボタンをクリックします(ウィンドウ2を閉じ、ウィンドウ1を開きます)。
  • 再度、ウィンドウ1のボタンをクリックして、ウィンドウ2のデータを開き、データを入力してください。
  • エラーが発生します。同じキーを持つアイテムが追加されました。
+1

どのような商品ですか?どのような鍵ですか?いくつかのコードが必要です。 – GazTheDestroyer

答えて

2

アプリケーション全体またはウィンドウ2のすべてのインスタンスで共有されているウィンドウ2のデータにデータを追加するように思えます。ウィンドウ2を2回目に入力してデータを入力すると、すでに追加されているDictionaryにデータを追加します。したがって、「同じキーを持つアイテムが既に追加されています」というメッセージが表示されます。

私のアドバイス:データを入力するコードにブレークポイントを置き、Dictionaryに含まれている値をチェックしてください(使用していればアクセスできます)。次に、追加しているデータをチェックし、レプリケーションが見つかるはずです。

また、重複したエントリが追加されないようにするさまざまな方法があります。

  1. クリーンあなたはそれで初めて終了したDictionary - (あなたがあなたの元データに重複したエントリを持っていない限り)あなたは一度だけでデータを追加し、このように。

  2. エントリを追加する前にキーがDictionary内に存在するかどうかを確認してください。 if (mSomeDictionary.ContainsKey(someEntryKey))/

  3. 単に最新の値を使用する場合は、特定のオブジェクトでキー入力したデータを上書きすることができます。あなたはmSomeDictionary[someEntryKey] = someValue;のようなものを使ってこれを行うことができます。エントリキーが存在しない場合は、新しいエントリが自動的に追加されます。

上記のどれもエラーが発生するとスローされた例外の中からスタックトレースを含め、我々はさらにそれに見ることができるコードを投稿し、すべてであなたを助けていない場合。

+0

辞書と言えば、私のコントロール用のスタイリングが入っているリソースディクショナリを指していますか?それでは私はどのように対処しますか? – iceheaven31

+0

私は実際には、標準の 'Dictionary 'を参照していました。 MSDNドキュメントについては、[ここ](http://msdn.microsoft.com/en-us/library/xfhwa508.aspx)を参照してください。 –

+0

System.Collections.Generic.Dictionary'2.Insert(TKeyキー、TValue値、ブール値)のSystem.ThrowHelper.ThrowArgumentException(ExceptionResourceリソース)System.Collections.Generic.Dictionary'2.Add(TKeyキー、TValue値).Framework.Biometric.Initialize()のFrame2.ctor(Boolean onResumeMode)のFramework.Biometric.Initialize(String providerPath)のFramework.Biometric。()のBioFramework.Util.Properties.GetProviderFromAssemblyList(List'1アセンブリ) (projectpath)\ window2xml.cs:行63(Object Sender、RunWorkerCompletedEventArgs e)in(projectpath)\ Window2ViewModel.cs .... – iceheaven31

関連する問題