如何在 win 表单中为用户控件设置响应宽度
how to set responsive width for user control in win forms
我正在开发一个 windows 表单应用程序,我有一个父表单,我通过它调用用户控件,问题是当父表单最大化时,用户控件显示良好
但是当我最小化父表单时,我发现用户控件的一部分被隐藏了。
尽管我在面板内显示了用户控件并将此面板的停靠栏设置为填充。
并且我使用以下代码来显示面板内的用户控件:
xUc.Dock = DockStyle.Fill;
this.PnlView.Controls.Clear();
this.PnlView.Controls.Add(xUc);
xUc.BringToFront();
更新1:
我在用户控件中使用了 TableLayoutPanel
,我遇到了同样的问题:
最小化形式:
最大化形式:
屏幕截图表明这两个面板不是由同一父级托管的。您可以通过检查 PnlView.Controls
集合中的内容或检查左右面板的 Parent
属性 来验证这一点。所以,xUc.Dock = DockStyle.Fill;
没有给你预期的停靠布局,它填充了 PnlView
.
的 free space
要获得预期的布局,请确保由同一父级托管两个面板,如果这不是一个选项(例如,右侧面板是某种 浮动 面板)然后处理相关事件(即 Parent.SizeChanged
、RightPanel.VisibleChanged
...等)以设置左侧面板的边界(主要是宽度)。
我正在开发一个 windows 表单应用程序,我有一个父表单,我通过它调用用户控件,问题是当父表单最大化时,用户控件显示良好
但是当我最小化父表单时,我发现用户控件的一部分被隐藏了。
尽管我在面板内显示了用户控件并将此面板的停靠栏设置为填充。
并且我使用以下代码来显示面板内的用户控件:
xUc.Dock = DockStyle.Fill;
this.PnlView.Controls.Clear();
this.PnlView.Controls.Add(xUc);
xUc.BringToFront();
更新1:
我在用户控件中使用了 TableLayoutPanel
,我遇到了同样的问题:
最小化形式:
最大化形式:
屏幕截图表明这两个面板不是由同一父级托管的。您可以通过检查 PnlView.Controls
集合中的内容或检查左右面板的 Parent
属性 来验证这一点。所以,xUc.Dock = DockStyle.Fill;
没有给你预期的停靠布局,它填充了 PnlView
.
要获得预期的布局,请确保由同一父级托管两个面板,如果这不是一个选项(例如,右侧面板是某种 浮动 面板)然后处理相关事件(即 Parent.SizeChanged
、RightPanel.VisibleChanged
...等)以设置左侧面板的边界(主要是宽度)。