我有一个简单的用户控件(只是一个例子):它是40x100,但可调整大小。它有两个按钮,一个固定在顶部,一个固定在底部。
将此控件放在表单上并将其拉伸至40x400。这很好。
但是只要我将表单切换为Localizable = True并更改语言以翻译任何字符串,Designer就会显示用户控件 好像它是默认的翻译语言的40x100,即底部按钮没有锚定。
或更好:底部按钮显示,就像 未锚定一样。但是,控件占据了正确的空间量(40x400)(参见选择突出显示)。它在运行时显示正常,这只是一个设计师问题。
我在这里错过了什么吗?这是应该如何工作的吗?
我现在在VS2010上,试过旧的VS2005,但它在那里也一样。
...谢谢
答案 0 :(得分:2)
我可以通过将第二个按钮固定到底部来轻松地重现此问题。 Anchor属性有一些奇怪的失败模式,布局不应该在它应该的时候重新计算。你找到了一个这样的案例。我认为根本问题是Size属性也是可本地化的属性,并且设计器在启动新的本地化集时无法触发所需的事件。这样的事情,没有什么是微不足道的。
您需要解决此问题并且不依赖于Anchor属性来正确定位按钮。这只需要在UserControl代码中使用一行代码,例如:
protected override void OnResize(EventArgs e) {
button2.Top = this.ClientSize.Height - button2.Height;
base.OnResize(e);
}