【发布时间】:2015-08-31 23:18:46
【问题描述】:
我正在尝试从表单的左边缘显示一个菜单。当我这样做时,我希望表单顶部的面板缩小。面板上有按钮,锚点设置为“右”。
面板通过将其向左移动并将宽度减小相同的量来调整大小 - 因此按钮应保持在屏幕上的相同位置。按钮确实留在正确的位置,但看起来很糟糕。即使我使用 .Bounds = new Rectangle(...) 设置面板的新尺寸,看起来好像我设置了 Left 属性,然后设置了 Width 时间延迟!我已经搞砸了 SuspendLayout 而没有任何影响。我确信有一个简单的方法可以解决这个问题。我创建的一个简单示例:
private void StartTest_Click( object sender, EventArgs e )
{
_AmountLeft = PanelToResize.Width / 2; // half of it
_Step = _AmountLeft / 10;
Ticker.Enabled = true;
}
private void Ticker_Tick( object sender, EventArgs e )
{
int this_bit = Math.Min( _AmountLeft, _Step );
// reduce
PanelToResize.Bounds = new Rectangle( PanelToResize.Left + this_bit, PanelToResize.Top, PanelToResize.Width - this_bit, PanelToResize.Height );
if (this_bit == _AmountLeft)
Ticker.Enabled = false;
_AmountLeft -= this_bit;
}
我把这段代码和设计器代码放在这里:https://gist.github.com/anonymous/acf0ec4d5c81dbc5a670
【问题讨论】:
-
@X-TECH 是的,我希望示例中的按钮看起来不会移动
-
你的github项目没有演示问题,按钮稳如磐石。正如他们应该的那样。 Windows 版本可能很重要。
-
@HansPassant 嗯,我的 Win7 x64。