我是Windows窗体和学习的新手。 我有一个简单的代码,其中包含用listbox1填充的表单。我试图通过将其绑定到IDictionary实例来填充它。
static IDictionary<string, string> Bind_Data = new Dictionary<string, string>();
Binding myBinding = new Binding("DataSource", Bind_Data, "Key");
listBox1.DataBindings.Add(myBinding);
运行此代码时出现以下错误。
错误:System.Reflection.TargetInvocationException:属性访问器 物体上的“钥匙” 'System.Collections.Generic.Dictionary`2 [[System.String,mscorlib, 版本= 4.0.0.0,文化=中性, PublicKeyToken = b77a5c561934e089],[System.String,mscorlib, 版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089]]' 引发以下异常:“对象与目标类型不匹配。” ---> System.Reflection.TargetException:对象与目标类型不匹配。在 System.Reflection.RuntimeMethodInfo.CheckConsistency(对象目标)
如果有人可以帮助我理解此错误,请多加感谢。
我可以使用
listBox1.DataSource=new Binding(Bind_Data, null);
listBox1.ValueMemeber="Key";
listBox1.DisplayMember="Value";
但是我想使用绑定
答案 0 :(得分:0)
数据源参数只能是某些对象-字典类型不能实现IList,我怀疑这是您收到上述异常的原因。
如果您的基础类型必须是Dictionary,则可能需要将其包装在实现IList的自定义类中,以便获得所需的绑定,否则只需使用上面具有的第二种样式< / p>