我有一个像这样设计的基础表单类 在底部我放置了一个停靠的底部面板,在这个面板中我放了两个按钮。我还将这些按钮的Anchor属性设置为“顶部,右侧” 我还将Form的AutoScaleMode设置为无
在我的应用程序中,我继承了这个基本形式,我不知道发生了什么。我的按钮转到我面板的中间。如果我再次将其设置在左侧并重建我的BaseForm,它会再次进入中间位置。
答案 0 :(得分:1)
我已经看到,当基本形式的控件具有protected
修饰符时会发生这种情况。这意味着继承的表单可以设置控件的属性(如Location
)本身。不知道为什么会这样做,我不知道。
当Winforms变成一位老太太时,我停止了她的特质,只是试图解决它们(就像你对老太太一样)。在您的情况下,我会使用FlowLayoutPanel
代替常规Panel
并设置其FlowDirection = FlowDirection.RightToLeft
。
答案 1 :(得分:0)
您是否尝试过检查以确保在panel_resize事件中没有任何手动重定位按钮的代码?
在我继承的一些代码中,有很多这样的代码:
panel_resize(object sender, EventArgs e)
{
int buttonWidth = btnSubmit.Width + btnCancel.Width + 5; // 5 is buffer between
int leftOffset = (panel.Width - buttonWidth ) / 2 ;
btnSubmit.Left = leftOffset;
btnCancel.Left = btnSubmit.Right + 5; // Buffer
}
这在调整大小事件期间手动居中按钮(您可以这样做,但这就是他们所做的。)并且意味着设计时间看起来与实际运行时间不同。