C#.NET 4.0中的慢速数据绑定设置时间

我有一个问题。 我有动态生成布局的Windows窗体应用程序,但我的性能有问题。 在这种forms中,我使用.NET 4.0 DataBinding和安装后的数据绑定工作正常,但他绑定了一个控件的设置时间阻止我的应用程序大约0.7秒。 我有一些控制和时间设置约2分钟

我尝试了所有可能的解决方案,没有写自我绑定类,我没有任何想法。 为什么我的代码有问题?

 case "Boolean": { Binding b = new Binding("Checked", __bindingsource, __ep.Name); CheckBox cb = new CheckBox(); /* * HERE is the start of problem */ cb.DataBindings.Add(b); /* * HERE is the end of problem */ __flp.Controls.Add(cb); __bindingcontrol.AddBinding(b); break; } 

没有问题代码行所有工作都很快,没有绑定;-(但我想要以正常速度打开绑定。

PS1。 我在世代时间暂停了布局。

PS2。 我有绑定TextBox’es的问题,PictureBoxe,CheckBox只是一个例子。

如何做到这一点或更多如何调试问题,vs2010分析器说只有问题是绑定,我知道。

  1. System.Windows.Forms.Control.ControlCollection.Add(类System.Windows.Forms.Control)
  2. System.Windows.Forms.ControlBindingsCollection.Add(类System.Windows.Forms.Binding)

编辑: DataContext来自数据库。 (entity framework)

不确定这是否是您的情况下的问题,但如果触发“事件风暴”,绑定可能需要很长时间。 那就是你绑定到控件A,它会触发控件B的更改,从而触发控件A的更改….

要检查的一件事是您正在更新的控件上的事件。

另一件事是,从你的评论看,你看起来像是在表单之间共享__bindingsource。 这可能是问题的根源。 你为什么做这个? 使用每个表单的绑定源将使您的程序更易于管理。

这工作不快,因为__bindingsource有很多元素。 Binding不适合大集合,这是一个问题。

__bindingsource是一个BindingSource类。 并且必须有更少的元素来快速工作。 我解决了这个问题,为每个BindingSet创建另一个新的BindingSource实例(我的意思是将一个多个元素绑定到一个对象的属性)只有一个元素,只有这个我想要使用的。

我也有这个问题。 我将DataSourceUpdateMode设置为Never (在Binding -class构造函数中):性能要好得多。 如果您不需要更新数据源,这是正确的方法。

由于触发了Validation事件,因此会出现此性能问题。 即使控件失去焦点或被单击,也会触发validation事件,这会大大降低应用程序的性能。

编辑:虽然我没有绑定到EntityFramework,但性能非常糟糕。 将DataSourceUpdateMode设置为Never可减少触发的事件数。 将DataSourceUpdatedMode设置为Never ,更新将是单向的:从DataSource到Control。