Visual Studio Designer总是试图改变我的控制

我有一个有点复杂的UserControl,Visual Studio 2008在使用它时给了我一个相当无害的烦恼。 每次我使用Designer打开控件时,它都会决定立即更改设计器设置的一些无害值 – 即Size属性的初始化。 如果我保存这些更改,关闭并重新打开,它几乎总是最终决定我的控件的另一个组件需要更改初始大小,无限制。 幸运的是,这些变化是无害的,因为我在任何地方都使用自动resize,但这对于使用起来非常烦人。 我不知道从哪里开始弄清楚出了什么问题,我现在唯一想到的是Designer每次打开控件时都会将自动resize的结果分配回初始大小字段。 关于原因/修复的任何想法?

编辑:此外,我正在使用应用程序设置来保存应用程序运行中某些可resize的子组件的大小,但我真的希望Designer足够聪明,以了解它应该只使用默认值。

也许它可以帮助:
我注意到,如果插入一个自定义UserControl,FormDesigner(没有WPF,没有Web等)会有奇怪的行为。
随机更改了其他控件(GroupBox,EditBox,ComboBox)的大小(对于我来说,宽度)。
选择resize的控件似乎是随机的,但是在重新启动vs2010时它始终是相同的。 如果删除并重新插入,设计师会选择不同的控件随机resize…

我将UserControl的属性AutoScaleMode从“Font”更改为“Inherit”,但它没有再次发生。

你没错,设计师经常试图为属性添加默认值。

在属性声明的顶部添加:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 

这将告诉设计师忽略这个属性。

我有点类似的问题。 我在我inheritance的用户控件上使用Infragistics GroupBox,现在想要在派生类中更改其外观。 我已经在基类中保护它 – 所以它允许我在派生类中更改属性。 但它并没有拯救它。 每次我打开它 – 我都会得到相同的旧基类值。

任何的想法?

编辑:我想通了。

尝试上述给定答案之一的各种值。 使用[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]而不是[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]为已更改的属性生成代码 – 并且可以根据需要进行操作。

尝试覆盖控件的DefaultSize属性。

来自MSDN:DefaultSize属性表示最初创建控件时的大小。