在以下情况下,我遇到两个相关问题。
我有一个包含一些面板的winforms窗口。在这些面板中的一些面板中有许多(自定义)wpf用户控件。
如果我检查.host上的.Visible,它总是返回true。即使我可以看到它不可见。
如果我检查.Height它总是给我相同的大小。即使控件本身显示了可变数量的事物并且相应地改变了大小(通过Visibility.collaps);
如何获得正确的值?
编辑:已添加代码
Okey现在,我正在疯狂。 如果我在我的代码中添加一些消息框,以检查上述代码何时以及以何种顺序执行。当我这样做时一切正常!但是一旦我删除了消息框,它就会反转效果。而不是在需要时变大,反之亦然.... wtf wpf!private Size bereken_panel(Panel P)
{
Size Sz = new Size();
int tmp_H = 42;
foreach (Control SC in P.Controls)
{
if (SC is SplitContainer)
{
if (SC.Visible)
{
tmp_H += SC.Height;
}
}
else if (SC is System.Windows.Forms.Integration.ElementHost)
{
if ((SC as System.Windows.Forms.Integration.ElementHost).Child.Visibility == System.Windows.Visibility.Visible)
{
tmp_H += (int)(SC as System.Windows.Forms.Integration.ElementHost).Child.RenderSize.Height;
}
}
}
// tmp_H = 42 + n_showed * 25;
if (tmp_H < 65)
{
tmp_H = 65;
}
Sz.Height = tmp_H;
Sz.Width = 432;
return Sz;
}
所以这是经过一些额外的修改 澄清TopLeft点的位置。
int p_x_links = panel1.Width / 2 - 436;
int p_x_rechts = panel1.Width / 2 + 4;
//links
p_contact_gegevens.Size = bereken_panel(p_contact_gegevens);
p_telnrs.Location = new Point(p_x_links, p_contact_gegevens.Size.Height + p_contact_gegevens.Location.Y + 8);
p_telnrs.Size = bereken_panel(p_telnrs);
p_bezoekadres.Location = new Point(p_x_links, p_telnrs.Size.Height + p_telnrs.Location.Y + 8);
p_bezoekadres.Size = bereken_panel(p_bezoekadres);
//rechts
p_administratie.Size = bereken_panel(p_administratie);
p_postadres.Location = new Point(p_x_rechts, p_administratie.Size.Height + p_administratie.Location.Y + 8);
p_postadres.Size = bereken_panel(p_postadres);
答案 0 :(得分:0)
修改强>
很抱歉,该示例位于ActualWidth
,但您要求的是Height
。概念与btw相同。