基类的按钮是改变位置

时间:2013-05-08 16:54:06

标签: c# winforms c#-4.0 windows-forms-designer

我有一个像这样设计的基础表单类 enter image description here 在底部我放置了一个停靠的底部面板,在这个面板中我放了两个按钮。我还将这些按钮的Anchor属性设置为“顶部,右侧” 我还将Form的AutoScaleMode设置为

在我的应用程序中,我继承了这个基本形式,我不知道发生了什么。我的按钮转到我面板的中间。如果我再次将其设置在左侧并重建我的BaseForm,它会再次进入中间位置。 enter image description here

2 个答案:

答案 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 
}

这在调整大小事件期间手动居中按钮(您可以这样做,但这就是他们所做的。)并且意味着设计时间看起来与实际运行时间不同。