我正在使用WinForms創建應用程序。我有panel
其中我顯示user control
。在user control
裏面我有一個button
。當我點擊按鈕時,我想清除panel
並顯示不同的user control
。我想,使用下面的代碼來執行:從面板內部更改面板控制
private void btnCreateOffer_Click(object sender, EventArgs e)
{
var myControl = new WindowsFormsDemo.View.CreateOffer();
MockUpForm.panMain.Controls.Clear();
MockUpForm.panMain.Controls.Add(myControl);
}
這個工作從直接在parrent形式放置的按鈕,但是當我在使用user control
裏面,它說:
'MockUpForm.panMain' is inaccessible due to its protection level
我假設它與私人/公共課有關。但我寧願擁有「正確」的解決方案,而不是將所有事情都改爲公開。
有關如何通常這樣做的任何建議?
這是根本錯誤的方式來做到這一點。舉一個事件來代替,你的主表單可以訂閱它並在其控件上晃動。使用Controls.Clear()也是非常非常錯誤的,你必須在你刪除的任何控件上調用Dispose()方法,否則會導致永久性內存泄漏。 –
感謝您的意見。我對WinForms相當陌生,所以我很可能會做很多事情*非常*錯:-)。我將研究事件方法... – Noceo
@HansPassant:他沒有提到他是否想重新使用刪除的控件。但如果事件也訂閱處置是不夠的,無論如何會發生內存泄漏。 – taffer