C# 在FlowLayoutPanel的布局事件处理程序中设置子控件宽度
我有一个flowLayoutPanel,其中动态填充了子控件。 此flowLayoutPanel可能位于不同窗体上的某些面板上,因此其大小可能在运行时更改 添加第一个子控件时,我将其宽度设置为flowLayoutPanel.Width-10。 对于其他控件,我设置DockStyle=Fill 还有一个flowLayoutPanel\u布局事件处理程序,用于更改第一个控件的宽度:flowLayoutPanel.Controls[0]。宽度=flowLayoutPanel.width-10 在大多数情况下,它工作正常,但在其中一个表单上,我遇到了一个问题:加载表单时,flowLayoutPanel将所有控件的宽度设置为一个值(127)。当我最大化表单时,将使用正确的flowLayoutPanel.Width(例如,大约400像素)调用flowLayoutPanel\u布局,但flowLayoutPanel.Controls[0]。将其设置为flowLayoutPanel.Width-10后,宽度不会更改。它仍然等于127。没有例外或任何事情C# 在FlowLayoutPanel的布局事件处理程序中设置子控件宽度,c#,.net,winforms,flowlayoutpanel,C#,.net,Winforms,Flowlayoutpanel,我有一个flowLayoutPanel,其中动态填充了子控件。 此flowLayoutPanel可能位于不同窗体上的某些面板上,因此其大小可能在运行时更改 添加第一个子控件时,我将其宽度设置为flowLayoutPanel.Width-10。 对于其他控件,我设置DockStyle=Fill 还有一个flowLayoutPanel\u布局事件处理程序,用于更改第一个控件的宽度:flowLayoutPanel.Controls[0]。宽度=flowLayoutPanel.width-10 在大多数
是什么导致了这种行为?找到了问题的根源:当64位Windows Vista和7上存在大量嵌套控件时,会出现此问题: 在我的控制中覆盖OnSizeChanged有助于:
protected override void OnSizeChanged(EventArgs e)
{
if (!DesignMode && IsHandleCreated)
BeginInvoke((MethodInvoker)delegate{base.OnSizeChanged(e);});
else
base.OnSizeChanged(e);
}