我有一個包含groupbox控件的複合控件。問題是它覆蓋了放置在這個複合控件之上的控件。即使我將新控件發送到頂端,所以它們應該可見,但它們不是。複合控件的透明度?
當我使用groupbox的時候,當然會通過事物來展示,所以您可以看到包含在控件中的控件,只是由groupbox概述。
我需要在複合控件中做些什麼來獲得相同的效果/行爲嗎?
編輯:左側顯示在設計器中的控件,右側顯示在運行時的控件。
alt text http://i38.tinypic.com/dxdc2f.png
我有一個包含groupbox控件的複合控件。問題是它覆蓋了放置在這個複合控件之上的控件。即使我將新控件發送到頂端,所以它們應該可見,但它們不是。複合控件的透明度?
當我使用groupbox的時候,當然會通過事物來展示,所以您可以看到包含在控件中的控件,只是由groupbox概述。
我需要在複合控件中做些什麼來獲得相同的效果/行爲嗎?
編輯:左側顯示在設計器中的控件,右側顯示在運行時的控件。
alt text http://i38.tinypic.com/dxdc2f.png
有可能廷是正確的,有些事情是與設計師的支持你的控制腳麻,也就是說,您已經創建了ControlA,並在設計時通過添加按鈕將其擴展到ControlB。當您安裝ControlB時,該按鈕不可見。
您可以驗證在運行時,使用斷點/斷言/ etc中:`
ChildButton
存在。ChildButton
是CompositeControl.Controls
的成員。ChildButton
位置在CompositeControl
的'in-view'中。ChildButton
可見。如果是我,我會設置一個斷點在控制的構造,和騎入InitializeComponent()
,檢查是否一切被創建並正確添加。如果ChildButton
存在,並且在CompositeControl.Controls
中有參考,並且其位置在視圖中,則我無法解釋爲什麼它不顯示。
謝謝,如果我沒有錯,你認爲ChildButton是複合控件的一部分?因爲它不是。複合控件由2個控件組成:1個複選框,1個組框。但後來當我使用這個複合控件並在其上放置一些控件時,作爲用戶,控件僅在設計時顯示在頂部。 – 2009-10-07 21:29:54
是的,我知道你的意思。我開始認爲設計師對你的控制的支持被打破了。當您在複合控件初始化時逐步執行代碼時,請檢查所有內容應如您所期望的那樣。作爲最後的手段,您可以嘗試在運行時將按鈕添加到控件中,以驗證它是否正確顯示。如果是這樣,那麼你知道你有一個設計師問題。 – 2009-10-08 00:43:07
謝謝,如果這是一個設計師問題,它會被修復嗎? – 2009-10-08 16:14:12
如果你的意思,你想自定義控件的行爲類似於一個容器(如組框一般不會),那麼你需要讓控制和設計師知道應該如何處理。
記住實施IContainerControl
,並與設計師容器支持IE適當的設計屬性修飾的對象:
[Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design", typeof(System.ComponentModel.Design.IDesigner))]
謝謝,這也很有用。但是對於我的問題,它的行爲就像一個groupbox,但它覆蓋了它內部的控件。我可以在設計器中看到它們,但是當您運行該工具時,它們會出現在複合控件的後面。 – 2009-10-07 17:25:07
你可以截取設計師的截圖,顯示你的控件應該在哪裏?如果它們隱藏起來,你可以畫一個他們*應該*可見的地方的輪廓。這可能有助於爲我們其他人澄清您的問題。 – 2009-10-07 18:21:37
我添加了一張圖片。 – 2009-10-07 19:56:05
如果您將按鈕移動到控件邊緣 - 按鈕發生了什麼變化?如果它在控制範圍外的部分仍然可見,那麼您的控件不會像容器那樣工作。但是,如果它被裁剪掉 - 那麼你的控制就像一個控制器 - 至少在設計師中。 – 2009-10-09 07:06:26