[英]Can't transform windows form into myform in the load method of a user control
我正在Windows窗體(f1)中使用用戶控件(uc1),以顯示窗體的某些元素。
盡管有(uc1),但我需要訪問(f1)形式的一些元素。 因此,我在負載中有以下一行:
private void UC1_Load(object Sender, EventArgs e)
{
F1 parentFrom = (F1)this.parent;
}
現在,當我嘗試在設計器中打開F1時,在執行BUT時這絕對可以正常工作,但我收到錯誤消息(來自我的母語的翻譯):
類型“ System.Windows.Forms.Form”的對象不能轉換為類型“ F1”。
因此,我不能在設計器中打開它而不忽略這個“錯誤”。 因此,我的問題是我做錯了什么,還是可以避免該錯誤?
您可以檢查null並僅在它有效的情況下使用它,無論如何您都應該這樣做:
F1 parentFrom = this.parent as F1;
if(parentForm != null)
{
// Do something.
}
或者,您可以檢查LicenceManager.UsageMode
以查看控件是否在設計模式下運行:
if (LicenseManager.UsageMode != LicenseUsageMode.Designtime)
{
F1 parentFrom = (F1)this.parent;
}
或者,為什么不混合使用兩者呢?
附帶說明一下,如果只能直接在一種特定形式上使用它,這似乎會破壞用戶控件的意義。 也許您確實有一個有效的用例,或者您應該考慮重構您的方法。 例如,如果您希望在更新用戶控件時表單上發生某些事情,則可以使用自定義事件,並且在觸發事件時表單可以采取適當的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.