18

我有一个有点复杂的 UserControl,而 Visual Studio 2008 在使用它时给我带来了相当无害的烦恼。每次我用设计器打开控件时,它都会决定立即更改设计器设置的一些无害值——即 Size 属性的初始化。如果我保存这些更改,关闭并重新打开,它几乎总是会决定我的控件的另一个组件需要更改其初始大小,无穷无尽。幸运的是,这些更改是无害的,因为我在任何地方都使用自动调整大小,但这很烦人。我还不清楚从哪里开始找出问题所在,我现在唯一的想法是每次打开控件时设计器都会将自动调整大小的结果分配回初始大小字段。关于原因/修复的任何想法?

编辑:另外,我正在使用应用程序设置来保存跨应用程序运行的某些可调整大小的子组件的大小,但我真的希望设计器足够聪明,能够理解它应该只使用默认值。

4

4 回答 4

10

也许它会有所帮助:
我注意到如果您插入一个自定义 UserControl,FormDesigner(没有 WPF,没有 Web 等)会出现奇怪的行为。
其他控件(GroupBox、EditBox、ComboBox)的大小随机变化(对我来说发生在宽度上)。
选择调整大小的控件似乎是随机的,但是在重新启动 vs2010 时它总是相同的。如果删除并重新插入,设计者会选择一个不同的控件来随机调整大小......

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

于 2011-07-25T13:48:37.737 回答
5

你是对的,设计师经常尝试为属性添加默认值。

在属性声明的顶部添加:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

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

于 2009-04-27T23:33:50.357 回答
1

我有一些类似的问题。我在继承的用户控件上使用 Infragistics GroupBox,现在想在派生类中更改其外观。我已在基类中对其进行了保护——因此它确实允许我更改派生类中的属性。但它不保存它。每次我打开它——我都会得到与基类相同的旧值。

任何想法?

编辑:我想通了。

为上述给出的答案之一尝试各种值。使用[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]而不是[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]为更改的属性生成代码 - 并且事情按预期工作。

于 2009-04-28T03:05:10.020 回答
0

尝试覆盖控件的 DefaultSize 属性。

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

于 2009-04-30T10:01:40.533 回答