çalışmıyor ve bunu bazı kere UserControl
set, Bu yüzden çağırmak için böyle olduğu halde bir yöntem yazmak:bir UserControl çağırır bir form (<code>MainPage</code>) sahip
delegate void containerPanelCallback(UIPart uiPart);
public void IncludeUIPart(UIPart uiPart)
{
if (this.containerPanel.InvokeRequired)
{
containerPanelCallback d = new containerPanelCallback(IncludeUIPart);
containerPanel.Invoke(d, new object[] { uiPart });
}
else
{
containerPanel.Controls.Clear();
containerPanel.Controls.Add(uiPart);
}
uiPart.Size = this.containerPanel.Size;
uiPart.Dock = DockStyle.Fill;
}
UIPart
sınıf UserControl
'dan UserControls benim UIPart
öğesinden devralıyorum.
Bu yöntem ve bunun gibi lanse çağırmak:
public class myClass
{
...
private static MainPage _frmMain;
private static myUIPart6 UIP6;
...
public static void aMethod(/* Some arguments */)
{
UIP6 = new myUIPart6 { /* Some settings of properties */ };
_frmMain.IncludeUIPart(UIP6);
_frmMain.Show(); /*Throws an error*/
}
...
}
hatadır:
Çapraz iplik operasyon değil geçerlidir: Denetim 'MainPage' oldu parçacığı dışında başka bir iş parçacığı erişilebilir üzerinde oluşturuldu.
Ben soru ve burada bu hata hakkında birçok cevaplar birçok buldum Ama ben başka bir şey çağırmak durumunda, en _frmMain.Show();
? O atıyor neden onu anlamaya olamaz? Yoksa yanlış mıyım? UserControl'ümün tanıtımıyla ilgili midir?
'aMethod' diyorsun? –
Bir ana iş parçacığı tarafından gerçekleştirilen UI ile yapılan tüm işlemler için Invoke() çağrılmalıdır. Örneğinizde, IncludeUIPart() öğesini çağırırken Invoke özelliğini kullanın, ancak _frmMain.Show öğesini çağırırken Invoke(). Bütün aMethod'u Invoke() içinde sarmayı ve IncludeUIPart() –
'dan gelen çağrıyı kaldırmayı kaldırırım 2000'li yılların başında geliştiricinin yanı sıra şaka yaptığınız gibi düşünüyorum;) –