2009-10-07 63 views
0

我有一個包含groupbox控件的複合控件。問題是它覆蓋了放置在這個複合控件之上的控件。即使我將新控件發送到頂端,所以它們應該可見,但它們不是。複合控件的透明度?

當我使用groupbox的時候,當然會通過事物來展示,所以您可以看到包含在控件中的控件,只是由groupbox概述。

我需要在複合控件中做些什麼來獲得相同的效果/行爲嗎?

編輯:左側顯示在設計器中的控件,右側顯示在運行時的控件。

alt text http://i38.tinypic.com/dxdc2f.png

+0

你可以截取設計師的截圖,顯示你的控件應該在哪裏?如果它們隱藏起來,你可以畫一個他們*應該*可見的地方的輪廓。這可能有助於爲我們其他人澄清您的問題。 – 2009-10-07 18:21:37

+0

我添加了一張圖片。 – 2009-10-07 19:56:05

+0

如果您將按鈕移動到控件邊緣 - 按鈕發生了什麼變化?如果它在控制範圍外的部分仍然可見,那麼您的控件不會像容器那樣工作。但是,如果它被裁剪掉 - 那麼你的控制就像一個控制器 - 至少在設計師中。 – 2009-10-09 07:06:26

回答

0

有可能廷是正確的,有些事情是與設計師的支持你的控制腳麻,也就是說,您已經創建了ControlA,並在設計時通過添加按鈕將其擴展到ControlB。當您安裝ControlB時,該按鈕不可見。

您可以驗證在運行時,使用斷點/斷言/ etc中:`

  1. ChildButton存在。
  2. ChildButtonCompositeControl.Controls的成員。
  3. ChildButton位置在CompositeControl的'in-view'中。
  4. ChildButton可見。

如果是我,我會設置一個斷點在控制的構造,和騎入InitializeComponent(),檢查是否一切被創建並正確添加。如果ChildButton存在,並且在CompositeControl.Controls中有參考,並且其位置在視圖中,則我無法解釋爲什麼它不顯示。

+0

謝謝,如果我沒有錯,你認爲ChildButton是複合控件的一部分?因爲它不是。複合控件由2個控件組成:1個複選框,1個組框。但後來當我使用這個複合控件並在其上放置一些控件時,作爲用戶,控件僅在設計時顯示在頂部。 – 2009-10-07 21:29:54

+0

是的,我知道你的意思。我開始認爲設計師對你的控制的支持被打破了。當您在複合控件初始化時逐步執行代碼時,請檢查所有內容應如您所期望的那樣。作爲最後的手段,您可以嘗試在運行時將按鈕添加到控件中,以驗證它是否正確顯示。如果是這樣,那麼你知道你有一個設計師問題。 – 2009-10-08 00:43:07

+0

謝謝,如果這是一個設計師問題,它會被修復嗎? – 2009-10-08 16:14:12

0

如果你的意思,你想自定義控件的行爲類似於一個容器(如組框一般不會),那麼你需要讓控制和設計師知道應該如何處理。

記住實施IContainerControl,並與設計師容器支持IE適當的設計屬性修飾的對象:

[Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design", typeof(System.ComponentModel.Design.IDesigner))] 
+0

謝謝,這也很有用。但是對於我的問題,它的行爲就像一個groupbox,但它覆蓋了它內部的控件。我可以在設計器中看到它們,但是當您運行該工具時,它們會出現在複合控件的後面。 – 2009-10-07 17:25:07