2014-01-15 42 views
3

對Visual Studio 2010不熟悉,但已使用其他平臺進行Windows開發超過10年。我在其他平臺(如Visual FoxPro)中完成了以下工作,但它似乎不適用於VS ...Visual Studio - 可以將控件添加到設計器中的基於面板的用戶控件中嗎?

我創建了一個用戶控件,其中包含一個面板,其中包含一些標籤和幾個按鈕。當我製作一個新窗體(WinForm)並將此用戶控件放到窗體上時,我無法將其他控件添加到該窗體中。用戶控件作爲單個項目(紫色齒輪圖標)出現在文檔大綱中,無法訪問面板或面板中包含的控件。

這是用戶控件的不恰當使用嗎?在這個應用程序中,我將有許多面板中包含相同的按鈕和標籤以及其他控件的獨特組合。讓用戶控件提供面板幷包含通用控件似乎很自然,然後只需放入設計器中面板各種實例所獨有的控件即可。如果我必須從基本控件構建設計器中的所有面板,我會這樣做,但我希望能夠使用看似明顯的OOP過程。

回答

1

如果您不是從UserControl繼承,而是從Panel繼承,那麼控件仍然是一個Panel,您可以在其上添加子控件。

注意事項:通過控制自身添加

1)子控件被認爲是許多面板上的方法和getter子控件(它們不會自動隱藏)。我從來沒有試過這個。但子類Form和從子類化形式派生用戶形式工作正常。而WinForms設計器則以不可修改的元素優雅地顯示繼承的子元素。

2)在派生類中,傾向於重寫OnXxx()方法來對Panel事件執行內部操作,而不是將處理程序附加到Xxx事件:這將允許您決定是否應該在附加處理程序之前或之後執行代碼它在調用base.OnXxx(sender,e)之前或之後;

0

儘管您正在創建我的用戶控件本身包含一個Panel,但其技術上不再是您的應用程序中的Panel。這在技術上是一種新的控制。

也許您應該建立一個足夠動態的控件,其中所有面板和控件都位於相同的自定義用戶控件上,但會根據需要動態顯示和隱藏它們。

+0

我從來沒有嘗試過這種方式,但是您可以創建一個面板並將自定義控件放在上面。那麼你可以添加任何你想要的面板。 – logixologist

+0

這可能是我的終極解決方案。很明顯,用戶控件不起作用,並且子類化面板聽起來很麻煩。謝謝! – twitort

相關問題