2011-12-22 110 views
0

我知道错误是常见错误,但我不确定如何解决此问题。具有相同密钥的项目已被添加错误

我的情况是这样的:在窗口1,窗口2将显示(填充文本框)

  • 点击按钮。
  • 在窗口2上完成事务(保存数据)。
  • 单击窗口2上的BACK按钮(关闭窗口2,打开窗口1)。
  • 再次单击窗口1上的按钮打开并填充窗口2上的数据。
  • 错误触发。具有相同密钥的项目已被添加。
+1

什么项目?什么关键?我们需要一些代码。 – GazTheDestroyer 2011-12-22 13:04:59

回答

2

这听起来像你添加数据在窗口2东西当你进入窗口2第二次和填充你的数据是在整个应用程序或窗口2.所有实例共享,你很可能将数据添加到已添加的Dictionary中。因此,消息“具有相同密钥的项目已被添加”。

我的建议是:把一个破发点在您填充数据的代码,并检查所含Dictionary中的值(如果你已经使用一个可以访问它)。然后检查你正在添加的数据,你应该找到复制。

或者,有多种方法可以防止添加重复条目。

  1. 干净,当你用它在第一时间完成了Dictionary - 这种方式,您只一次添加数据(除非你在你的源数据有重复的条目)。

  2. 在添加条目之前查看该关键字是否存在于Dictionary之内。你可以通过使用if (mSomeDictionary.ContainsKey(someEntryKey))/

  3. 如果你只是想使用最新的值,你可以覆盖用某个对象键入的数据。你可以通过使用类似的东西来做到这一点:mSomeDictionary[someEntryKey] = someValue;。如果输入键尚不存在,则会自动添加新条目。

如果上述的可以帮助你在所有的,张贴代码在出现错误,从抛出的异常中包括堆栈跟踪,我们可以看看它进一步。

+0

当你说词典时,它是指资源词典,它包含我的控件的一些样式的东西?那我该如何处理呢? – iceheaven31 2011-12-23 05:15:15

+0

我实际上是指一个标准的'Dictionary '。有关MSDN文档,请参阅[这里](http://msdn.microsoft.com/en-us/library/xfhwa508.aspx)。 – 2011-12-23 08:15:17

+0

System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)System.Collections.Generic.Dictionary'2.Insert(TKey key,TValue value,Boolean add)at System.Collections.Generic.Dictionary'2.Add(TKey key,TValue value )在Frame.Biometric。()在Framework.Biometric.Initialize(字符串providerPath).Framework.Biometric.Initialize()在Window2..ctor(布尔onResumeMode)在BioFramework.Util.Properties.GetProviderFromAssemblyList(List'1程序集)在(projectpath)\ window2.xaml.cs中:第63行(object sender,RunWorkerCompletedEventArgs e)在(projectpath)\ Window2ViewModel.cs .... – iceheaven31 2011-12-23 09:47:41

相关问题