WinForm窗體繼承自定義的模板窗體出錯

2022-02-22 20:48:49 字數 731 閱讀 8358

在開發winform程式的時候,我們往往需要根據需要做一些自定義的控制項模組,這樣可以給系統模組重複利用,或者實現更好的效果等功能。而今天自定義乙個窗體,然後子窗體繼承的時候出現了一點問題。

問題:在windows應用程式中,從現有的窗體繼承,檢視子窗體的設計檢視時,會出現錯誤:未將物件引用設定到物件的例項。(設計檢視打不開)

或會出現錯誤:服務容器中已存在服務 system.windows.forms.design.ieventhandlerservice。引數名: servicetype 

解決:把父窗體中form_load事件和建構函式中所有**

都放在!designmode裡,即

private

void

form_load(...)

}

如果父窗體的構造方法中也有自己寫的**,也得放if(!designmode)裡。然後重新生成專案,即可看到子窗體的設計檢視。

繼承過來的子窗體,窗體上的控制項都處在鎖定狀態,如果要編輯,需要在控制項的屬性面板中把控制項的modifiers屬性改成public。

解釋:component.designmode 屬性

「乙個控制項只有在它自己被拖拽到設計器的時候,其 designmode 才是真,如果它被包含在其他控制項中被加入到設計器,那麼那個控制項才是在設計模式,而它不是!換句話說,designmode 並不能反映當前環境是否是執行時,它只能告訴你,這個控制項當前是不是直接被設計器操作(巢狀的已經不算了) 。」

C 自定義Winform無邊框窗體

在實際專案中,winform窗體或者控制項不能滿足要求,所以就需要自己設計窗體等,當然設計介面可以用的東西很多,例如wpf 或者一些第三方的庫等。本例中將採用winform設計乙個扁平美觀的窗體。需要的可以參考 c 自定義button按鈕控制項 窗體效果 是否允許最大化 3 4private boo...

自定義形狀窗體

在用vb程式設計中,有時,我們需要使用乙個跟不規則背景有相同形狀的不規則窗體,怎麼辦呢?首先,我們需要設定無邊框窗體,即 borderstyle 0 其次,把背景覆蓋不住的窗體背景設定成透明。這需要用到api函式,private declarefunction getwindowlong lib u...

使用自定義窗體

一 從頭定義新自定義窗體 1.新建乙個目錄,再新建乙個工程。2.定義這個自動建立好的窗體為自己需要的樣式。3.包存這個窗體和單元到希望的目錄,工程檔案就儲存在新建的目錄。4.將沒有用的工程聯通目錄一併刪除。二 在新工程中使用自定義窗體 1.新建乙個工程。2.移除自動建立的單元 自動建立的form也會...