相关疑难解决方法(0)

访问BindingContext [dataSource]和BindingContext [dataSource,dataMember]时有什么不同?

我们遇到了一个问题,在那里

  • 我们在MDI工作空间中有两个相同窗口的实例绑定到两个单独的对象模型.
  • 对象模型将其覆盖的方法.Equals.GetHashCode方法视为相等.
  • 调用.EndCurrentEdit()窗口2会触发窗口1的绑定更新
  • 两个窗口都设置为使用单独的a BindingContext

我们发现这个问题与调用有关

((PropertyManager)ctrl.BindingContext[dataSource]).EndCurrentEdit();
Run Code Online (Sandbox Code Playgroud)

如果我们改变它

((PropertyManager)ctrl.BindingContext[dataSource, dataMember]).EndCurrentEdit();
Run Code Online (Sandbox Code Playgroud)

它工作正常.如果我们删除我们的.Equals.GetHashCode覆盖,它也可以正常工作,因此两个对象模型不再被认为是相等的.

这对我来说没有意义,因为窗户是相同的,所以dataMember属性也是一样的.

这个链接,我相信这些调用的定义是:

public BindingManagerBase this[object dataSource] {
    get {
        return this[dataSource, ""];
    }
}

public BindingManagerBase this[object dataSource, string dataMember] {
    get {
        return EnsureListManager(dataSource, dataMember);
    }

internal BindingManagerBase EnsureListManager(object dataSource, string dataMember) {
    BindingManagerBase bindingManagerBase = null;

    if (dataMember == null)
        dataMember = "";

    // Check whether data source wants to …
Run Code Online (Sandbox Code Playgroud)

c# binding .net-3.5 winforms

13
推荐指数
1
解决办法
3009
查看次数

标签 统计

.net-3.5 ×1

binding ×1

c# ×1

winforms ×1