有关问题的快速摘要,请查看底部的图片。
您好,
我创建了一个Form
(名为BaseForm),作为我所有窗口的基础。
这个base-Form包含(为简单起见)底部的“statusbar”(用户控件)。
该状态栏已锁定,因此无法在设计器中移动或调整其大小。 它还将它的锚设置为左,下,右,因此它始终保持在底部并水平调整大小。
现在当创建另一个Form
并进行更改以便它继承MyProject.BaseForm而不是System.Windows.Forms.Form时,状态栏就在那里。
但现在状态栏的位置和大小存在问题。 状态栏的标准位置和大小是错误的。 VisualStudio从BaseForm获取位置和大小,而不是应用Anchor。
此外,我不能(并且不想!)移动/调整状态栏以调整问题。
一个明显且有效的解决方案是将statusbars Dock属性设置为Bottom。 但是我不能将它作为我问题的通用解决方案,因为我也有不应该停靠的控件。 (例如,应始终位于表单右下角的按钮)
答案 0 :(得分:2)
你有一个简单的问题,控件是私有的,所以不能在派生形式中搞乱。它的所有属性都不可访问,包括位置和大小。这会在你派生的表格上的错误位置冻结它。布局引擎也无法移动它。为什么它会显示锁定图标。
返回BaseForm,选择用户控件并将Modifiers属性从Private更改为Protected。重建。现在,您可以在需要使用的派生表单上移动它。
答案 1 :(得分:1)
我认为解决此问题的最佳方法是使用TableLayoutPanel
代替显式停靠。在父表单中创建一个2行TableLayoutPanel
。制作底行AutoSize
并将状态栏放入其中。这样,派生表单可以自由地在另一行中添加内容,该行代表控件的其余部分。