काम नहीं करता मैं एक फार्म (MainPage
) है और मैं इसमें कुछ बार एक UserControl
निर्धारित करते हैं, तो मैं आह्वान करने के लिए इस तरह उस रूप में एक विधि लिखें:एक UserControl की आह्वान
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
वर्ग UserControl
से उत्तराधिकारी है कि मेरे UserControls UIPart
से प्राप्त होते हैं।
इस विधि और इस तरह का शुभारंभ किया आह्वान: वैध
पार धागा आपरेशन नहीं:
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*/ } ... }
त्रुटि है नियंत्रण 'mainpage' धागा यह जताने के अलावा और एक धागा तक पहुँच को निर्मित।
मैं कई सवाल और यहां इस त्रुटि के बारे में कई सवालों के जवाब मिल गया है, लेकिन मैं इसे समझ नहीं क्यों यह फेंकने है _frmMain.Show();
? पर, मैं कुछ और आह्वान करना चाहिए? या मैं गलत तरीके से हूँ? क्या यह मेरे UserControl के हैंडल के निर्माण से संबंधित है?
कैसे कर आप 'एमेशन' कहते हैं? –
आमंत्रित() को गैर-मुख्य धागे से किए गए यूआई के साथ किसी भी/सभी संचालन के लिए बुलाया जाना चाहिए। आपके उदाहरण में, आप IncludeUIPart() को कॉल करते समय Invoke का उपयोग करते हैं, लेकिन _frmMain को कॉल करते समय कोई Invoke() नहीं दिखाएं। दिखाएं। आह्वान (में पूरे aMethod लपेटकर प्रयास करें) और IncludeUIPart() –
से आह्वान कॉल को दूर मुझे लगता है कि आप जल्दी डेवलपर के रूप में रूप में अच्छी तरह 2000-वें अपने जोक के रूप में में हैं, कि जिस तरह से आप गंभीर बातों पर मजाक नहीं करना चाहिए पर तो) –