“BindingSource não pode ser sua própria fonte de dados” - erro ao tentar redefinir a fonte de ligação de um método em outra classe
Nós estamos ligando umDataGridview
usandoBindingSource
. Então, no segmento principal, temos dado assim.
class1BindingSource = new BindingSource();
class1BindingSource.DataSource = class1List;
this.dataGridView1.DataSource = class1BindingSource;
Depois disso, eu coloquei um trabalhador de segundo plano no formulário e está acionando em um clique de botão.
ou seja, no clique do botão
this.backgroundWorker1.RunWorkerAsync()
NoBackgroundWorker
DoWork Event
Eu estou tentando atualizar oBindingSource
e lá tentando atualizar oDataGridview
.
Então oBindingSource
A redefinição é feita em um método em outra classe.
DoWork Event
Class2 cl2 = new Class2();
cl2.UpdateBindingSource(class1BindingSource);
UpdateBindingSource Method
public void UpdateBindingSource(BindingSource bs)
{
Class1 c1 = bs.Current as Class1;
for (int i = 0; i < 1000; i++)
{
lock (bs.SyncRoot)
{
c1.MyProperty1 = i;
bs.ResetItem(0);
}
}
}
Agora estou recebendo uma exceção comoBindingSource
não pode ser sua própria fonte de dados. Não ajuste oDataSource
eDataMember
propriedades para valores que remetem aBindingSource
.
Se eu estou fazendo isso na minhaDoWork Event
então eu posso redefinir o item no próprio segmento de controle usandoBeginInvoke method
.
Mas, na verdade, estou tentando simular nosso cenário de aplicação. Então eu quero resolver isso neste formato.
Alguém pode me ajudar nisso.