2008-10-24 57 views
0

問題很簡單,但最好在視覺上進行說明。請注意,所有屏幕截圖均來自Visual Studio 2005設計界面。當我真正運行應用程序時,我注意到沒有區別。Winforms用戶控件在另一個用戶控件(有時)時得到剪輯

這裏是我的用戶控件(我們稱之爲UC-1):

alt text http://i34.tinypic.com/wciaer.png

上的控制按鈕被設置爲錨設置爲底部+右。

這裏是它看起來當放置到一個特定的父用戶控制(UC-A),如:

alt text http://i37.tinypic.com/2emnak9.png

請忽略在顏色等的差異。一些樣式是在用戶控件的構造函數中完成的。

注意到控件的底部正在被裁剪。父級使用的控件實例設置爲「FixedSingle」邊框。還要注意,消耗的控制器比原始控制器更高,表明按鈕底部固定器設置受到尊重,但本質上應該是超調。

要確認這絕對是在父控制的問題,注意另一用戶控制(UC-2)當放置在相同的父包含數據網格視圖:

alt text http://i34.tinypic.com/2rgci7o.png

再次,該實例的消費控制設置了一個「FixedSingle」邊框,這有助於說明裁剪。數據網格正確地錨定到底部右側。爲了加強這個問題的困惑,這裏的第一用戶控制(UC-1)當被放置在不同的父用戶控制(UC-B):

alt text http://i38.tinypic.com/2rnyjd0.png

這裏的第二「消耗」控制(UC -2)當由形式消耗:

alt text http://i34.tinypic.com/rr8uc9.png

通知,沒有限幅這個時候。

我花了很多小時搜索和試驗來解決這個問題。我已經用盡了邊緣,填充,大小(最小/最大),位置,錨點等各種設置。我不能爲我的生活弄清楚爲什麼這一個用戶控件導致兒童用戶控件像這樣剪輯。

我注意到的另一件奇怪的事情是,當我在父級用戶控件設計表面(控件行爲不當時)執行UNDO時,即使撤消操作與這些控件無關,剪切後的用戶控件實例也會實際移動位置。例如,如果我使主要包含控件更大,則撤消,幾個子控件跳起來。它們似乎在被剪輯時移動。非常可疑。

有沒有人有任何想法是怎麼回事?

+0

您是否找到了解決方案? – idstam 2009-11-02 08:36:18

回答

1

一個非常有趣的問題!

您的問題父母(UC-A)是否會覆蓋調整大小或客戶區域的方法?

或者UC-A的Padding或Margin底部價值爲負值?

在UC-A的底部邊緣還有其他東西嗎?也許,有一個負面的大小?或者,UC-A設置了它的子控件的約束嗎?如果面板的最小高度太大,你會得到這個結果。

希望這有幫助!如果沒有,你有沒有機會將源碼發佈到UC-A?

0

假設有問題的父控件不是一個標準的.NET框架類型,而是一個自定義的控件,我猜測它將客戶端和屏幕座標混合在邏輯的某個地方。但這只是一個猜測。

1

我遇到了完全相同的問題,並在搜索可能的解決方案時找到了您的帖子。雖然我很確定這是winforms中的一個bug,但我找到了一些解決方法。只需將所有內容放在面板內的用戶控件中,將面板停靠在面板上,然後在面板內部進行錨定。這似乎可以緩解這個問題,儘管我的按鈕的顯示尺寸與父控件中的尺寸略有不同。很奇怪。我通過在設計器中縮小按鈕來進行補償,並且由於某些未知原因,它在父控件中延伸了幾個像素。希望這可以幫助。

相關問題