簡體   English   中英

無法在用戶控件的加載方法中將Windows窗體轉換為myform

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM