2011-09-21 30 views
2

的WinForms的非可視化繼承我有兩種形式,它們具有相似的功能(即,類似的控制量),但是完全不同的佈局。所以正常的inheritedForm(VS2010提供的)不會在這裏工作。與vb.net

我曾嘗試以下操作:

Public Class BaseForm 
    Inherits System.Windows.Forms.Form 

    Friend WithEvents Button1 As System.Windows.Forms.Button 
End Class 

而且在Form1.Designer.vb

Partial Class Form1 
    Inherits BaseForm 
    ... 
    <all Designer generated Code> 
    ... 

    ' Friend WithEvents Button1 As System.Windows.Forms.Button <- remove this Line 
End Class 

如果我編譯/執行此,測試形式工作預期;但現在我無法再設計表格了。

如果我切換到設計模式,它說:

The variable 'Button1' is either undeclared or was never assigned. 

http://imgur.com/ieWvf

因此,看起來,只有設計者試圖猜測的形式看起來像通過檢查最頂層的類,不編譯充分繼承樹...

有誰知道這是一個解決方法嗎?

THX, 丹尼爾

+0

*不*編輯設計器生成的代碼。 –

+0

在這種情況下,最好的做法是什麼?如果我想編寫代碼,它引用了這種形式,但它不應該關心它交互的視覺實現。 – DanielD

+0

我完全不清楚你試圖達到什麼目的。如果一個基礎表單對你來說沒用,那麼就不要繼承它。 –

回答

0

我中有你有要帶給繼承表格,然後添加自己的更多的功能基本形式對一些現有的控制感。記住一件事,在VB.NET中的繼承默認設置爲陰影,所以你可以重新定義你的繼承頁面中的代碼,爲同一個按鈕做不同的功能。

不過,我覺得在聲明父窗體的表單元素,當你忘了可重寫關鍵字。這將有助於編譯器知道表單可以被重寫,並允許您定義自定義功能。

請記住,在VB.NET所有控件和頁面類和無論我們在大學OOP課上學會了適用於此。