0

我有一个像这样设计的基本表单类 在此处输入图像描述 在底部我放了一个停靠底部面板,在这个面板内我放了两个按钮。我还将这些按钮的 Anchor 属性设置为“ Top, Right ” 我还设置了 Form 的 AutoScaleMode 为None

在我的应用程序中,我继承了这个基本表单,但我不知道发生了什么。我的按钮位于面板的中间。如果我再次将它设置到左侧并且可能重建我的 BaseForm 它会再次进入中间。 在此处输入图像描述

4

2 回答 2

1

我已经看到当基本表单中的控件具有protected修饰符时会发生这种情况。这意味着继承的表单可以设置控件的属性(如Location)本身。但是为什么会这样,我不知道。

当 Winforms 变成老太太时,我不再与她的特质作斗争,只是试图解决它们(就像你对老太太所做的那样)。在您的情况下,我将使用 aFlowLayoutPanel而不是常规Panel并设置其FlowDirection = FlowDirection.RightToLeft.

于 2013-05-08T18:20:17.887 回答
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 
}

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

于 2013-05-08T19:25:31.033 回答