可本地化表单上的Windows窗体用户控件会导致Designer中出现显示问题

时间:2014-11-17 19:48:53

标签: winforms visual-studio-2010 .net-4.0 user-controls windows-forms-designer

我有一个简单的用户控件(只是一个例子):它是40x100,但可调整大小。它有两个按钮,一个固定在顶部,一个固定在底部。

将此控件放在表单上并将其拉伸至40x400。这很好。

但是只要我将表单切换为Localizable = True并更改语言以翻译任何字符串,Designer就会显示用户控件 好像它是默认的翻译语言的40x100,即底部按钮没有锚定。

或更好:底部按钮显示,就像 未锚定一样。但是,控件占据了正确的空间量(40x400)(参见选择突出显示)。它在运行时显示正常,这只是一个设计师问题。

A picture showing the issue.

我在这里错过了什么吗?这是应该如何工作的吗?

我现在在VS2010上,试过旧的VS2005,但它在那里也一样。

...谢谢

1 个答案:

答案 0 :(得分:2)

我可以通过将第二个按钮固定到底部来轻松地重现此问题。 Anchor属性有一些奇怪的失败模式,布局不应该在它应该的时候重新计算。你找到了一个这样的案例。我认为根本问题是Size属性也是可本地化的属性,并且设计器在启动新的本地化集时无法触发所需的事件。这样的事情,没有什么是微不足道的。

您需要解决此问题并且依赖于Anchor属性来正确定位按钮。这只需要在UserControl代码中使用一行代码,例如:

protected override void OnResize(EventArgs e) {
    button2.Top = this.ClientSize.Height - button2.Height;
    base.OnResize(e);
}