Местоположение контейнера элемента управления игнорируется, а элемент управления окрашивается в (0,0) в форме.
Контейнер представляет собой панель с местоположением, установленным на (26,26)
Насколько я могу судить, единственное отличие состоит в том, что это происходит, когда содержащая панель управления не была видимой, а затем делалась видимой.
Если я выполняю тот же код, когда панель видимая, она работает правильно.
Я не вижу никакой разницы в моей трассировке между двумя делами.
У кого-нибудь есть идеи относительно того, как мне избежать этой ' функции '?
Resize :: Layout - это просто оболочка для вызова соответствующей функции в зависимости от типа:
void Resize::Layout(System::Windows::Forms::Control^ Ctrl)
{
SMSG(String::Format("Resize::Layout {0} ({1}) {2}{3}",
Ctrl->Name, Ctrl->GetType()->ToString(), Ctrl->Location.ToString(),
Ctrl->ClientRectangle.Size.ToString()),true);
// resize the Resize... controls
if (Ctrl->GetType()->ToString() == "Custom.ResizeLabel")
{
safe_cast<Custom::ResizeLabel^>(Ctrl)->Layout();
}
else if (Ctrl->GetType()->ToString() == "Custom.ResizePanel")
{
safe_cast<Custom::ResizePanel^>(Ctrl)->Layout(Ctrl, true);
}
else if(Ctrl->GetType()->ToString() == "Custom.ResizeTabControl")
{
safe_cast<Custom::ResizeTabControl^>(Ctrl)->Layout(Ctrl, true);
}
else LayoutCtrl(Ctrl);
SMSG(String::Format("Resize::Layout {0} ({1}) {2}{3}", Ctrl->Name,
Ctrl->GetType()->ToString(), Ctrl->Location.ToString(),
Ctrl->ClientRectangle.Size.ToString()),false);
}
Вот моя трассировка для неудачного случая: Location и ClientSize - это трассируемые значения.ClipRectangle в событии OnPaint отличается.
UnderneathButton и OnTopButton содержатся в HomeButtonsPanel.
HomeButtonsPanel содержится в HomePanel.
HomePanel содержится в HomePanelBorder.
HomePanelBorder содержится в HomeTab.
HomeTab содержится в FormTabs.
FormTabs содержится в FormTabsPanel.
FormTabsPanel содержится в FormPanel.
FormPanel содержится в Form1.
Resize::Layout HomeButtonsPanel (System.Windows.Forms.Panel) {X=66,Y=68}{Width=75,Height=52}
Resize::Layout UnderneathButton (System.Windows.Forms.Button) {X=0,Y=29}{Width=75,Height=23}
Resize::Layout UnderneathButton (System.Windows.Forms.Button) {X=0,Y=29}{Width=75,Height=23}
Resize::Layout OnTopButton (System.Windows.Forms.Button) {X=0,Y=3}{Width=75,Height=23}
Resize::Layout OnTopButton (System.Windows.Forms.Button) {X=0,Y=3}{Width=75,Height=23}
Resize::Layout HomeButtonsPanel (System.Windows.Forms.Panel) {X=66,Y=68}{Width=75,Height=52}
HomePanel::Layout Height set - {X=0,Y=0}{Width=253,Height=125}
Resize::Layout HomePanel (Custom.ResizePanel) {X=0,Y=0}{Width=253,Height=125}
HomePanelBorder::Layout Height set - {X=0,Y=0}{Width=253,Height=125}
Resize::Layout HomePanelBorder (Custom.ResizePanel) {X=0,Y=0}{Width=253,Height=125}
Resize::Layout HomeTab (System.Windows.Forms.TabPage) {X=4,Y=25}{Width=255,Height=127}
FormTabs::Layout Height set - {X=0,Y=0}{Width=263,Height=156}
Resize::Layout FormTabs (Custom.ResizeTabControl) {X=0,Y=0}{Width=263,Height=156}
FormTabsPanel::Layout Height set - {X=26,Y=26}{Width=263,Height=156}
Resize::Layout FormTabsPanel (Custom.ResizePanel) {X=26,Y=26}{Width=263,Height=156}
FormPanel::Layout Height set - {X=0,Y=0}{Width=315,Height=182}
*** FormPanel - OnSizeChanged:{X=0,Y=0}{Width=315,Height=182}
Resize::Layout FormPanel (Custom.ResizePanel) {X=0,Y=0}{Width=315,Height=182}
Resize::Layout Form1 (EasyButtons.Form1) {X=24,Y=0}{Width=315, Height=208}
*** FormPanel - OnPaint:{X=0,Y=0}{Width=315,Height=182} Clip - {X=26,Y=0,Width=289,Height=182}
Вот моя трассировка для успешного случая!
Resize::Layout HomeButtonsPanel (System.Windows.Forms.Panel) {X=66,Y=68}{Width=75,Height=52}
Resize::Layout UnderneathButton (System.Windows.Forms.Button) {X=0,Y=29}{Width=75,Height=23}
Resize::Layout UnderneathButton (System.Windows.Forms.Button) {X=0,Y=29}{Width=75,Height=23}
Resize::Layout OnTopButton (System.Windows.Forms.Button) {X=0,Y=3}{Width=75,Height=23}
Resize::Layout OnTopButton (System.Windows.Forms.Button) {X=0,Y=3}{Width=75,Height=23}
Resize::Layout HomeButtonsPanel (System.Windows.Forms.Panel) {X=66,Y=68}{Width=75,Height=52}
HomePanel::Layout Height set - {X=0,Y=0}{Width=253, Height=125}
Resize::Layout HomePanel (Custom.ResizePanel) {X=0,Y=0}{Width=253,Height=125}
HomePanelBorder::Layout Height set - {X=0,Y=0}{Width=253,Height=125}
Resize::Layout HomePanelBorder (Custom.ResizePanel) {X=0,Y=0}{Width=253,Height=125}
Resize::Layout HomeTab (System.Windows.Forms.TabPage) {X=4,Y=25}{Width=255,Height=127}
FormTabs::Layout Height set - {X=0,Y=0}{Width=263,Height=156}
Resize::Layout FormTabs (Custom.ResizeTabControl) {X=0,Y=0}{Width=263,Height=156}
FormTabsPanel::Layout Height set - {X=26,Y=26}{Width=263,Height=156}
Resize::Layout FormTabsPanel (Custom.ResizePanel) {X=26,Y=26}{Width=263,Height=156}
FormPanel::Layout Height set - {X=0,Y=0}{Width=315,Height=182}
*** FormPanel - OnSizeChanged:{X=0,Y=0}{Width=315,Height=182}
Resize::Layout FormPanel (Custom.ResizePanel) {X=0,Y=0}{Width=315,Height=182}
Resize::Layout Form1 (EasyButtons.Form1) {X=24,Y=0}{Width=315,Height=208}
*** FormPanel - OnPaint:{X=0,Y=0}{Width=315, Height=182} Clip - {X=0,Y=26,Width=315,Height=156}