2013-05-22 54 views
0

我創建了從其他形式的衍生因而形式: -可以從另一個窗體派生的窗體類中移動控件嗎?

Public Class MyForm 
    ' ...etc 
End Class 

Public Class MyDerivedForm 
    Inherits MyBaseForm 
    ' ...etc 
End Class 

Public Class MyOtherDerivedForm 
    Inherits MyBaseForm 
    ' ...etc 
End Class 

這個工程相當不錯,我可以使用窗體設計器控件添加到衍生形式。但是我想在MyDerivedForm附近移動一些繼承的控件,而不會打擾MyBaseFormMyOtherDerivedForm。我無法在表單設計器上看到這樣做的任何方式。

是否有可能做到這一點(最好是與設計師,但必要時與代碼)?

回答

1

這不是一個典型的VB.NET問題,所以不太確定這裏發生了什麼。當基類中的控件的Modifiers屬性爲Private時,您將在繼承的控件上獲得鎖定圖標,併爲繼承的控件顯示一個灰色的「屬性」窗口。 Winforms設計器觀察基類成員的可訪問性。私人成員不能混淆。修飾符的默認值是VB.NET中的Friend,C#中的Private。

讓它成爲朋友允許派生的窗體類來修改控件屬性。如果基本形式類存在於另一個程序集中,那麼Friend不夠好,您需要Public。

Anchor屬性可以是一個問題,但只有當您錨定在右側或底部時。如果控件是以這種方式錨定的,則派生形式與基本形式具有不同的大小時,該控件具有訣竅以結束錯誤的位置。簡單地通過不錨定在基類的右/底部並更改派生類中的錨來避免。

+0

出於某種原因,我有一個基於所有控件(C#VS2013)上設置公共修飾符的窗體。在子類中,當我在設計器中加載表單時,我的控件屬性在「屬性」窗口中變爲灰色。我從來沒有見過這樣的行爲 - 可能只是我。它驅使我瘋了,我可能會開始一個新的線程。 – Andez

1

在我的VB.NET WinForms應用程序中,我繼承了窗體,我可以在設計器中獲取繼承的控件,並將它們移動到窗體上的非繼承控件上。

但是我注意到過去有兩件事阻止了這一點。如果您更改基礎窗體上控件的位置,或更改某些定位屬性(如錨點或停靠點),則可以(但不總是)移動您的繼承控件。此外,我無法在早期版本的.NET中移動我的一些繼承控件(我相信2.0),但我從來沒有找到原因,所以我不得不通過屬性網格來改變位置。

+0

現在你來提起它,不動的控件確實錨定在窗體的右下角;在這種情況下是一個理想的事情。只是我有時希望他們被錨定在一個稍微不同的地方。這些控件的屬性網格完全禁用。 –

+0

感嘆。刪除基類中的錨定不允許控件在派生類中移動。還是)感謝你的建議。 –

+0

你想要移動什麼樣的控件?我知道一些更復雜的控件(像DataGridView這樣的具有行的內部集合的控件)和一些第三方控件只是不支持設計器中的可視繼承。 – XN16

相關問題