【发布时间】:2013-07-12 08:27:20
【问题描述】:
我有以下情况,我想将Button1 定位在正下方并与Button 2 水平对齐,但仍将Button1 保留在groupBox1 中,而Button 2 在@987654327 中@:
我看过几篇关于 PointToClient() 和 PointToScreen() 的帖子,但仍然无法在不同容器之间正确转换 - 在这种情况下为 groupBox1 和 groupBox2。
我尝试了以下代码的一些变体(例如,在调整表单大小时尝试重新定位按钮),但我仍然对它的工作原理感到困惑。
具体来说,我似乎不清楚我应该在哪个control 上调用PointToScreen(),以及我应该将哪些参数传递给该方法以实现我上面所描述的。
private void Form1_Paint(object sender, PaintEventArgs e)
{
var btn2Pos = button2.PointToScreen(button2.Location);
button1.Location = button1.PointToClient(btn2Pos);
}
解决这个问题的最简单方法是什么?
旁注,这样做的原因:
我希望能够禁用groupBox2,以及其中的所有控件,但仍保持一定 启用了button 1之类的控件,即使它们已定位 相对于button 2。
【问题讨论】:
-
我很困惑
right below and horizontally aligned。图像是否应该是最终结果,并且在调整窗口大小后两个按钮的比例相同?还是说按钮重叠? -
不,该图像是它可能看起来像开始的示例。重新定位后,按钮 1 应该出现在 groupBox2 中,并且在按钮 2 下方。代码不完整 - 只是我尝试过的一些事情的一部分,以便让按钮以这样的方式定位彼此更相关(与其不同的父容器相关)。
-
我仍然不确定你想要的输出。但我觉得可以通过操纵 Anchor 属性本身来实现。我猜不需要那么多代码。