我有一個UserControl添加其他UserControls,但我想添加「最新」控件是最上面的,所以它高於其他。因爲控件應該互相重疊。就像紙牌遊戲一樣。因此,我添加了5個控件,第一個控件應該是最優先的最不重要的 - 最顯眼的。繪製自定義控制高於所有其他控件(之前添加)
任何想法?
或者我是否必須重寫「容器」控件的Paint方法?和Control.CreateGraphics()並繪製它?
我有一個UserControl添加其他UserControls,但我想添加「最新」控件是最上面的,所以它高於其他。因爲控件應該互相重疊。就像紙牌遊戲一樣。因此,我添加了5個控件,第一個控件應該是最優先的最不重要的 - 最顯眼的。繪製自定義控制高於所有其他控件(之前添加)
任何想法?
或者我是否必須重寫「容器」控件的Paint方法?和Control.CreateGraphics()並繪製它?
考慮Control類的BringToFront和SendToBack方法。 檢查出這些問題的答案太
只要在添加新控件時使用userControl1.BringToFront()
即可。
但是,請注意,這不會阻止用戶「掛鉤」到它下面的控件中。爲此,您需要禁用或使其他控件不可見。
在Windows窗體,其中控件添加到他們的父母控件集合的順序決定了它們渲染的順序。
這意味着要麼處理代碼中的子控件的添加並使用適當的插入位置,要麼在設計器中移動控件(不幸的是,這往往意味着對* .Designer.cs進行危險的手動編輯文件)。
我建議您採用第一種方法,這是大型WinForms項目的唯一可行的方法,並且可以在代碼中顯式控制插入邏輯。順便說一句,好消息是,沒有必要修改繪製處理程序,所以你擔心像使用CreateGraphics()黑客是不合理的,並消除:)
這不會自動發生? –